Pourquoi tu joues encore avec un fichier... TFileStream mon vieux...
drlobo
ben j'ai deja essayé temp:=t;
mais quand j'affiche temp y a rien dedans et pourtant t n'est pas vide:
si j'affiche par exemple t[1], ca affiche un caractere!!
je vois vraiment pas d'ou vient le probleme
antp
temp := t;
tout simplement.
t^ pointe vers le premier caractère en fait... et donc donne un char. Or la chaine c'est un PChar, donc t. Et string := pchar on dirait que Delphi comprend...
ca marche pas (je suis pas sur que ce soit comme ca qu'il faut faire pour recuperer la chaine pointé dans un string)
antp
exemple tiré de l'aide de Delphi:
Code :
var
F: file;
Size: Integer;
Buffer: PChar;
begin
AssignFile(F, 'test.txt');
Reset(F, 1);
try
Size := FileSize(F);
GetMem(Buffer, Size);
try
BlockRead(F, Buffer^, Size);
ProcessFile(Buffer, Size); // c'est ici que tu copies ton buffer vers autre chose, une string par exemple.
finally
FreeMem(Buffer);
end;
finally
CloseFile(F);
end;
end;
antp
WideString c'est de l'unicode (2 octets/caractère) ça risque plus de poser des problèmes qu'autre chose dans ton cas. Met une string simple:
temp: string;
et pour le t := PChar(AllocMem( )); je veux bien croire que ça fait une erreur :D
drlobo
alors comment faut faire pour ne pas lire char par char?
rien compris moi.....
pq tu lis caractere par caractere ?
drlobo
je lit dans un fichier des caracteres
quand je fais ca:
var
Buffer:Char;
temp:widestring;
for j:=1 to taille do
begin
Fileread(Fichier,Buffer,1);
memo1.text:=memo1.Text+Buffer;
end;
ca marche (le texte est affiché)
mais si je fais ca:
temp:='';
for j:=1 to taille do
begin
Fileread(Fichier,Buffer,1);
temp:=temp+Buffer;
end;
memo1.text:=temp;
et ben il met rien dans temp
si dans la boucle je met juste temp:=Buffer et que j'affiche temp, il y a quelque chose dedans mais dès que j'essaye de concatener les valeurs succesives de Buffer ca ne me met rien dans temp.