bonjour récemment je remplace J'ai besoin de formulaire de ligne définie qui dossier de sorte que je faisais quelque chose comme ça: p> alors quand la ligne deux est nécessaire, je suis simplement p> < Pré> xxx pré> p> textfile code> avec
tfileStream code>. Je ne l'utilise jamais, alors j'ai un petit problème avec ça.
4 Réponses :
Si vous avez besoin de lire un fichier texte et d'accéder à chaque ligne, essayez plutôt d'utiliser un TStringList classe avec cette classe Vous pouvez charger un fichier, lire les données (accesser chaque ligne à l'aide d'un index) et enregistrer les données en arrière.
quelque chose comme ça P>
FText : TStringList; i : integer; begin FText := TStringList.Create; try FText.LoadFromFile('C:\Foo\Foo.txt'); //read the lines for i:=0 to FText.Count-1 do ProcessLine(FText[i]); //do something //Add additional lines FText.Add('Adding a new line to the end'); FText.Add('Adding a new line to the end'); //Save the data back FText.SaveToFile('C:\Foo\Foo.txt'); finally FText.Free; end; end; end;
Ça a l'air gentil ... attendez-le. Puis-je créer un nouveau fichier?
L'utilisation de TStrings est très inefficace de mémoire.
@Dudi, oui seulement se débarrasser de la ligne loadfromfile code> puis ajoutez de nouvelles lignes.
@ user539484 TStringList code> n'est pas mauvais pour la taille normale des fichiers texte. Dans la question de la puissance, il indique
[0..30] de chaîne code> qui n'est pas assez rien. Dans ce cas,
TStringList code> est juste efficace et facile à utiliser.
@Pruz désolé mais ce n'est pas parfaitement clair pour moi. Quand je veux créer un nouveau fichier à quoi ça ressemble?
@Dudi: Savetofile crée un nouveau fichier, s'il n'existe pas encore.
Mais pourquoi utiliser "Savetofile" il écrase d'exister du contenu?
@Pruz Il y a une chance de sauvegarder exister du contenu?
Essayez-vous d'ajouter des données à ce dossier? BTW est rruz code> pas
pruz code>.
@Arnaud Bouchez, vous devez définir la taille du fichier texte "normal" d'abord :-) BTW, OP se lit à EOF, de sorte que N de lignes pourrait être plus que seulement 31 (x <62g-31 octets)
@Dudi, oui Utilisez la méthode Supprimer code> Passer l'index de la ligne pour supprimer
ftext.delete (index); code> BTW si vous avez une question supplémentaire sur cette classe est tombé gratuitement sur cette classe. Demandez (démarrer) une nouvelle question dans si
Je sais que je devrais mais je comprends cela rapidement avec Ceci
Je newer versions de DELPHI Vous pouvez utiliser Tstreamreader / TStreamwriter Voici un exemple d'utilisation de Tstreamreader ... Ceci est uniquement destiné à manipuler des fichiers texte < Pré> xxx pré> p>
Selon ce que vous voulez faire, c'est la classe de flux dont vous avez besoin. P>
Voulez-vous travailler avec du texte (caractères avec des panneaux de rupture et des caractères de fin de ligne)? p>
ou, voulez-vous travailler avec des données binaires? p>
Je vois que vous utilisez un tableau de caractères, à la place d'une chaîne. Voulez-vous vraiment utiliser des données de caractère comme si c'était binaire? Parfois, certaines applications nécessitent cette affaire. P>
J'utilise un tableau de chaîne. J'ai besoin de créer un nouveau fichier / chargement à partir de fichier, ajouter un nouveau contenu au fichier.
Je suggère également d'utiliser la classe TStringList pour gérer plusieurs lignes à la place sur un tableau uni. Le problème ici est comment lire / écrire toutes ces lignes avec un contrôle de texte / édition / mémo. Le précédent exemple TStringList montre déjà que.
Tréam et ses descendants immédiats sont la plupart des cours d'accès de bas niveau. Ils traitent surtout avec des tampons génériques. Il existe des classes plus spécialisées qui descendent ou utilisent un flux pour effectuer des tâches de niveau supérieur. P>
Depuis que Delphi 1 Treaders et Twriter pourraient être utilisés pour lire et écrire des types Delphes directement (chaînes inlcuppées), mais elles n'ont pas été conçues pour gérer des fichiers «orientés à la ligne» (malheureusement, ils ont été trop conçus avec des propriétés de composants en cours d'esprit. , pas comme cadre général). P>
Turbo Power Systools a une belle classe tstanseitextstream qui implémente l'accès orienté ligne aux fichiers texte dans une manière similaire à celle du fichier texte. Depuis Delphi 2009, de nouvelles classes (voir OPC0DE réponse) mettent en œuvre le même type d'accès sans la nécessité de bibliothèques tiers (en outre, ils prennent en charge différents codages grâce à Delphi 2009 prolongé le support de code de code, y compris Unicode). P>