2017-10-09 11 views
1

Dans mon cas, j'ai perdu un symbole $ A à la fin de la ligne quand j'obtiens un champ dans Delphi. Je pense, le problème est dans les composants FireDac. J'utilise Delphi 10.1 Berlin et Sqlite (je ne connais pas de version). Quand je démarre le programme ci-dessous, j'ai le résultat 3! = 4 dans le message. Ce est le code:Pourquoi le symbole char (10) à la fin de la ligne est-il perdu?

FD := TFDQuery.Create(nil); 
FD.Connection := FDConnection1; 
FD.ExecSQL('create table t2 (f2 text)'); 
FD.ExecSQL('insert into t2 values(''123''||char(10))'); 
FD.Open('select f2, length(f2) as l from t2'); 
ShowMessage(IntToStr(Length(FD.FieldByName('f2').AsString))+'!='+FD.FieldByName('l').AsString); 

symbole $ Dernière A perdu. Peut-être que quelqu'un m'explique ce comportement étrange.

+0

Aucun dublicage, je ne veux pas de chaînes de concaténation. J'ai perdu un symbole $ A. –

+0

Merci beaucoup. Ton commentaire m'aide vraiment. Ça marche. Maintenant le symbole est à sa place. –

Répondre

1

Vous devez désactiver la TFDQuery.FormatOptions.StrsTrim propriété:

Contrôle la suppression des espaces de fuite de valeurs de chaîne et zéro octets à partir des valeurs binaires
...
Pour SQLite, cette propriété est appliquée à tous colonnes de chaîne