Dezouille
Messages postés75Date d'inscriptionmardi 28 juin 2005StatutMembreDernière intervention21 avril 2010
-
22 août 2005 à 14:36
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 2006
-
22 août 2005 à 17:24
Bonjour,
Je voudrais creer un TFileStream pour y inséré des numero extrait d'un fichier txt.
Ex d'une ligne du fichier txt:
Bon de livraison 00069036 du 30/07/2005 Client XXX.....
Je voudrais extraire le numero 00069036. J'ai beaucoup de ligne a extraire et a inserer dans le TFileStream.
Une fois ceci fait, je voudrais trier mon TFileStream dans l'ordre croissant.
Je ne sais pas trop comment faire, merci de votre aide.
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 22 août 2005 à 15:23
TStringList vaut plus qu'un tableau étant donné toutes les fonctionnalités mise à ta disposition : nombre d'item, recherche de position, rapidité de manipulation... Y'a plein d'ASM et de pointeurs.
Pour un tableau dynamique :
var Tableau : arrayof quelquechose;
begin SetLength(Tableau,Taille);
//Prêt
end;
Dezouille
Messages postés75Date d'inscriptionmardi 28 juin 2005StatutMembreDernière intervention21 avril 2010 22 août 2005 à 15:14
Sinon je pense avoir une petite idée sur la façon de faire. En faite j'ai pensée apres reflection, d'oublier le TFileStream, et de créer un tableau dinamique, et ensuite de faire un tri a bulle. Mais comment créer mon tableau dinamique?
Dezouille
Messages postés75Date d'inscriptionmardi 28 juin 2005StatutMembreDernière intervention21 avril 2010 22 août 2005 à 15:20
Ouais, je vais faire un copy pour extraire les num. J'ai vu sa dans l'aide delphi (j'aurais du regarder avant). Mais pour le tableau dynamique, comment je peux faire d'apres toi?
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 22 août 2005 à 15:39
array of integer
array of string
array of TStringList
Bref... un tableau de types (structures ou objets)
Les array de taille indéfinie ne sont pas supportés par tous les linkers Delphi, notamment Delphi (D3) pour le 32 bits. Quand je met D5+, cela veut dire compatible pour Delphi version 5 et versions plus récentes. Mais il me semble même que D4 supporte ce genre de tableaux.
Dezouille
Messages postés75Date d'inscriptionmardi 28 juin 2005StatutMembreDernière intervention21 avril 2010 22 août 2005 à 16:16
Encore une question:
Je voudrais lui dire:
Si Debut_de_la_ligne commence par 'Bon' alors...
Comment lui demander si la ligne du fichier txt commence par 'Bon'?
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 22 août 2005 à 16:56
Pour inserer dans mon tableau ce que j'ai extrait avec la fonction copy(...)? quelle est la synthaxe?
Si tu as un array of string et que l'index numéro N est disponible, tu fais :
MonTableau[N]:= 'Ma chaine de caractères';
...sachant que string est illimité dans la longueur (l'allocation de mémoire automatique et dynamique).
Sache que quand tu fais SetLength(Tableau,N), le tableau va de la case 0 à N-1. C'est pas sûr, mais en tout cas, ne te fais pas avoir avec les index qui ne commencent jamais à 1 (c'est d'ailleurs très rare les tableaux & listes qui commencent à 1).
De même pour les listes, la dernière valeur est donnée par :
MaListe[MaListe.Count-1]; //si et seulement si MaListe.Count>0
<HR>
Comment lui demander si la ligne du fichier txt commence par 'Bon'?
const Marque = 'Bon';
begin if LowerCase(Copy(MaChaine,1,Length(Marque)))= LowerCase(Marque) then
ShowMessage('MaChaine commence par "'+Marque+'", sans gérer la casse des caractères.');
end;
Si tu charges ton fichier texte à ligne dans un TStringList, alors le début du fichier sera donné par :
MaListe[0];
La longueur de cette chaîne dépend uniquement du fichier considéré.
Cependant, il ne faut pas charger des fichiers énormes dans les listes. Faut alors simuler les TStringList par des lectures linéaires des fichiers à l'aide des fonctions de base : AssignFile, Reset, ReadLn, Eof et CloseFile;