AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Lesen, Schreiben und mehr in Textdateien - TFileStream, ...?
Thema durchsuchen
Ansicht
Themen-Optionen

Lesen, Schreiben und mehr in Textdateien - TFileStream, ...?

Ein Thema von Totti · begonnen am 12. Nov 2005 · letzter Beitrag vom 4. Dez 2005
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von Totti
Totti

Registriert seit: 1. Dez 2004
Ort: Harrislee
59 Beiträge
 
Delphi 2005 Personal
 
#1

Lesen, Schreiben und mehr in Textdateien - TFileStream, ...?

  Alt 12. Nov 2005, 15:10
Hi, gleich zu Beginn die Problemstellung:
Ich möchte in einer Textdatei lesen und gerne auch schreiben ... und zwar möglichst nach folgender Sytax ...

while x=t do readln(f,x); //das macht er beispielsweise 10x, weil dann zeile 11 netmehr gleich t ist
zeile_11:=u;
etc.

Also, das Problem ist halt, dass ich ja in der schleife die zeile 11 schon gelesen habe und der zeiger nun bereits am ender der 11 (bei read) bzw. am anfang der 12er (bei readln) steht und ich für ein bearbeiten der 11. zeile die ganze datei von vorne lesen müsste ... da ich wohlgemerkt momentan mit f: textfile; arbeite.

Hab nun schon bisch gesucht und co und selbstverständllich bin ich auf die tfilestreams gestoßen - doch scheint mir das mit denen auch nicht gerade ein kinderspiel zu werden, mit textdateien zu arbeiten.

Was ist eurer meinung nach die beste Lösung?
Vielen Dank im Voraus,

Malte
Malte
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Lesen, Schreiben und mehr in Textdateien - TFileStream,

  Alt 12. Nov 2005, 15:19
bei FileStream gibt es kein ReadLn, du musst also zeischen für Zeischen durchgehen und den Zeilenumbrauch suchen. Im übrigen gibt es bestimmt auch funktionen um im textfile die position zu ändern (seek etc. ?)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Totti
Totti

Registriert seit: 1. Dez 2004
Ort: Harrislee
59 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Lesen, Schreiben und mehr in Textdateien - TFileStream,

  Alt 12. Nov 2005, 15:49
ne, seek läuft net bei textfile

Und mit TFilestream müsste ich statt readln dann immer ne funktion verwenden, die alle zeichen bis zum nächsten crlf ausgibt, gel?
Malte
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Lesen, Schreiben und mehr in Textdateien - TFileStream,

  Alt 12. Nov 2005, 15:57
genau, readln macht ja letztendlich auch nix anderes als die datei zu lesen bis ein zeilenumbruch kommt, und das musst du dir eben selbst schreiben.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Lesen, Schreiben und mehr in Textdateien - TFileStream,

  Alt 12. Nov 2005, 15:58
Moin,

Zitat von SirThornberry:
...du musst also Zeischen für Zeischen durchgehen...
das bedeutet man nimmt "file of byte" und dort geht dann auch seek.

Aber was ich nicht verstehe ist das Schreiben. Durch so ein Vorgehen kannst du die Länge einer Zeile nicht verändern. Wie stellst du dir das vor?

MfG
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von Totti
Totti

Registriert seit: 1. Dez 2004
Ort: Harrislee
59 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Lesen, Schreiben und mehr in Textdateien - TFileStream,

  Alt 14. Nov 2005, 14:02
hmm, nunja .... hab ich j a hinbekommen.
Ich krieg aber nur Zeichen ersetzt - muss ich nu für jede Zeilenänderung alle nachfolgenden Zeichen nach vorne ziehen/nach hinten schieben?!?

Gibbet da absolut keine Alternative?
Malte
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 
#7

Re: Lesen, Schreiben und mehr in Textdateien - TFileStream,

  Alt 14. Nov 2005, 14:20
Hallo lotti,

Versuchs mal mit TStrings, da liest du die ganze Datei mit LoadFromFile ein, änderst die Zeilen, und schreibst sie wieder mit SaveToFile zurück.

mfg

BrunoT
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat
Benutzerbild von Totti
Totti

Registriert seit: 1. Dez 2004
Ort: Harrislee
59 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Lesen, Schreiben und mehr in Textdateien - TFileStream,

  Alt 25. Nov 2005, 17:05
ne TSTringList verschlingt leider zuviele Ressourcen, braucht ergo zu lange ...
das sind Textdatein zwischen 400kb und 4MB ... da kommen einige Zeilen zusammen, leider

Aber wie es aussieht, muss es dann halt länger dauernn, was?
Malte
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Lesen, Schreiben und mehr in Textdateien - TFileStream,

  Alt 25. Nov 2005, 22:21
Hallo,

schau dir doch mal BlockRead und BlockWrite an.

Hier ein Beispiel, ich habe eine 11MB Datei ohne Probleme sehr schnell eingelesen.

Delphi-Quellcode:
procedure Einlesen;
var Datei: file;
    Laenge:integer;
    Inhalt:string;
begin
  assignfile(Datei, 'datei.txt');
  try
    reset(Datei, 1);
    Laenge:=FileSize(Datei);
    setlength(Inhalt, Laenge);
    BlockRead(Datei, Inhalt[1], Laenge);
  finally
    CloseFile(Datei);
  end;
end;
Der Inhalt der Datei steht dann im String Inhalt.

Ich verstehe nicht was du da genau machen willst, deshalb nur das Beispiel zum Einlesen.

MfG
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von Totti
Totti

Registriert seit: 1. Dez 2004
Ort: Harrislee
59 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Lesen, Schreiben und mehr in Textdateien - TFileStream,

  Alt 26. Nov 2005, 08:56
dann hab ich nen paar zigtausend zeichen in nem string .... ja.

Wie gesagt, ich muss lesen und bearbeiten, ich vesuch mal nen Beispiel zu konstruieren:
Delphi-Quellcode:
Totti
AS Roma
Ilary
Christian
27
09
1976
Roma
Italia
...
Und das nen paar tausend Mal. Nun geh ich von oben jede Zeile durch ... und wenn ich beispielsweise auf die Zeile 1976 Stoße, möchte ich die Zeile drüber (hier 09) verändern.
Mit ReadLn/WirteLn, also nem "textfile" klappt das ja so nicht - und ne Stringlist war mir zu langsam - aber wie es ausschaut, momentan der einzig vernünftige weg.

Es sei denn, ich arbeite mit deinem Monsterstring und arbeite mich dadrin vor und zurück ... dann zieh ich aber glaub ich doch eher ne List vor, ist komfortabler.
Malte
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz