TFileStream, WideString et n'importe quoi

TFileStream, WideString et n'importe quoi - Delphi/Pascal - Programmation

Marsh Posté le 21-07-2003 à 23:42:58    

Code :
  1. For I:=0 to ST.NumberOfParts-1 do
  2.     begin
  3.      T:=TFileStream.Create(IncludeTrailingPathDelimiter(ExtractFilePath(Application.exename))+format('kfk_%d.c2c',[i]),fmCreate);
  4.       wTemp:=IncludeTrailingPathDelimiter(splitoutput_txt.Text)+ExtractFileName(splitfile_txt.Text)+format('.kk%d',[i]);
  5.       T.Write(wTemp,sizeof(wTemp));
  6.       T.Free;
  7.     end;


 
wTemp est une WideString.
Un breakpoint lors du "write" m'indique que son contenu est correct. Mais après le write le fichier contient n'importe quoi et sizeof(wtemp) renvoie 4.
 
Où me suis je gouré ?

Reply

Marsh Posté le 21-07-2003 à 23:42:58   

Reply

Marsh Posté le 21-07-2003 à 23:57:25    

T.Write(wTemp[1], Length(wTemp) * SizeOf(WideChar));
 
si tu écris wTemp tu écris juste un pointeur, vu que les string, AnsiString, WideString, etc. sont juste des pointeurs vers des chaînes.
avec le [1] tu écris la zone commençant au premier caractère.
Et pour avoir le nombre de caractères il faut utiliser Length, et savoir que les caractères font plus d'un octet.


Message édité par antp le 21-07-2003 à 23:57:39

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 22-07-2003 à 00:02:40    

Merci, je viens de tomber dessus dans l'aide...
 
Je suis un gros boulet. Non, un TBoulet maintenant que je suis converti à Delphi.
 
Encore merci ANTP (même si j'ai trouvé par moi même). Toujours rapide, toujours efficace. Toujours courtois.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed