Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2827 connectés 

 


Dernière réponse
Sujet : [delphi] pb avec les char et string
Buitoni Pourquoi tu joues encore avec un fichier... TFileStream mon vieux...

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Buitoni 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...

 

[edtdd]--Message édité par antp--[/edtdd]

drlobo 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)
antp exemple tiré de l'aide de Delphi:

Code :
  1. var
  2.   F: file;
  3.   Size: Integer;
  4.   Buffer: PChar;
  5. begin
  6.   AssignFile(F, 'test.txt');
  7.   Reset(F, 1);
  8.   try
  9.     Size := FileSize(F);
  10.     GetMem(Buffer, Size);
  11.     try
  12.       BlockRead(F, Buffer^, Size);
  13.       ProcessFile(Buffer, Size); // c'est ici que tu copies ton buffer vers autre chose, une string par exemple.
  14.     finally
  15.       FreeMem(Buffer);
  16.     end;
  17.   finally
  18.     CloseFile(F);
  19.   end;
  20. 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?
 
j'ai aussi essayer ca mais ca me fais une erreur:
 
var  
Buffer: PChar;
 
t:=PChar(AllocMem(taille + 1));
FileRead(fichier, t, taille);
[SDF]Poire 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.
 
A quoi c'est dû?
 
PS:il me faut la chaine lue dans une variable

Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR