pb avec les char et string [delphi] - Programmation
Marsh Posté le 28-12-2001 à 23:20:48
rien compris moi.....
pq tu lis caractere par caractere ?
Marsh Posté le 29-12-2001 à 11:21:07
alors comment faut faire pour ne pas lire char par char?
j'ai aussi essayer ca mais ca me fais une erreur:
var
Buffer: PChar;
t:=PChar(AllocMem(taille + 1));
FileRead(fichier, t, taille);
Marsh Posté le 29-12-2001 à 12:31:55
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
Marsh Posté le 29-12-2001 à 12:34:41
exemple tiré de l'aide de Delphi:
Code :
|
Marsh Posté le 29-12-2001 à 13:58:23
j'ai maitenant ca:
var
temp:string;
t:PChar;
GetMem(t,taille);
Fileread(Fichier,t^,taille);
temp:=t^;
FreeMem(texte, Size);
ca marche pas (je suis pas sur que ce soit comme ca qu'il faut faire pour recuperer la chaine pointé dans un string)
Marsh Posté le 29-12-2001 à 17:10:39
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...
[edtdd]--Message édité par antp--[/edtdd]
Marsh Posté le 29-12-2001 à 17:40:08
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
Marsh Posté le 29-12-2001 à 18:48:09
Pourquoi tu joues encore avec un fichier... TFileStream mon vieux...
Marsh Posté le 28-12-2001 à 23:17:08
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.
A quoi c'est dû?
PS:il me faut la chaine lue dans une variable