bonjour, je me décide à poster car je sais plus quoi faire
comment découper une chaine string contenant des caractères #0 (null 0 je sais pas le debogueur delphi affiche #0 en byte c'est le 0
j'interroge des serveurs diffèrent qui me renvoie tous un array de byte que je transforme en string avec:
après je parse mon string selon le serveur, sauf qu'un serveur me renvoie en séparateur un caractère 0 que je remplace par des saut de ligne linux lors du passage de l'array de byte en string.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Function TranslateByteToString(bMsg: TIdBytes): String; Var I: Integer; Begin Result := ''; For I := Low(bMsg) To High(bMsg) Do //on remplace les caractères 0 par saut de ligne linux sinon le string n'est pas affichable ni decoupable avec un tstringlist If bMsg[I] <> 0 Then Result := Result + Chr(bMsg[I]) Else Result := Result + Chr(10); End;
sinon mon tmemo n'affiche pas les string contenant des #0
et impossible d'exploser le string par le caractère zéro tout du moins j'ai pas trouvé d'ou ce post car je voudrai utiliser et renvoyer la réponse sans la modifier si possible...
j'utilise sa qui fonctionne avec les sauts de ligne etc mais pas le caractères #0
je peut pas découper mon array de byte, obligé après sa conversion en string
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Function Explode(Ch: String; Sep: String = ';'): TStringList; Var Pos: Integer; Begin Pos := AnsiPos(Sep, Ch); Result := TStringList.Create; While Pos > 0 Do Begin Result.Add(Copy(Ch, 1, Pos - 1)); If Pos <= Length(Ch) Then Ch := Copy(Ch, Pos + Length(Sep), Length(Ch)); Pos := AnsiPos(Sep, Ch); End; If Length(Ch) > 0 Then Result.Add(Ch); End;CODE] ... Var Search: TStringList; Begin Search := Explode(FQueryResult, Chr(10)); Try ... Finally Search.Free; End;
et j'ai essayé avecavec chr(0); sa va pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 LineResult.LineBreak := Chr(10); LineResult.Text := FQueryResult;
Delimiter et DelimitedText idem
merci pour votre aide. Je sais pas si j'ai été bien clair je m'y perd moi même
Partager