AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

In TextFile eine Zeile ändern

Ein Thema von kenuvis · begonnen am 3. Okt 2006 · letzter Beitrag vom 3. Okt 2006
Antwort Antwort
kenuvis

Registriert seit: 19. Apr 2006
71 Beiträge
 
Delphi 7 Enterprise
 
#1

In TextFile eine Zeile ändern

  Alt 3. Okt 2006, 13:11
Hallo,

ich habe ein TextFile dass so anfängt:
  • ;; TT File generated by YAWE Server.
    ;;
    IENTRYCOUNT = 1
    ;; Please do not remove the line above, it's for speed up purposes.
    ;; Removing it won't break DB loading, but it will slow it down.

und halt dann ewig weitergeht.

ich möchte jetzt die Zahl da hochzählen können und in die Datei schreiben.

Finden der Zeile und so mach ich wie folgt:

Delphi-Quellcode:
Assignfile(F, ExtractFilePath(Application.ExeName)+'saves\accounts.tt');
  Reset(F);
  Repeat
        ReadLn(F, temp);
  until pos('IENTRYCOUNT',temp) <> 0;
  IEntrycount := StrToInt(copy(temp,pos('=',temp)+1,length(temp)));
  closeFile(F);
(eigendlich sinnlos, dass ich das hier poste)

hoffentlich kann mir da einer helfen.

mfg kenu
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.108 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: In TextFile eine Zeile ändern

  Alt 3. Okt 2006, 13:26
Moin Kenu,

Du kannst doch, parallel zum Lesen der eigentlichen Datei, noch eine neue, temporäre erzeugen, und einfach die Zeilen, die unverändert bleiben sollen wieder dorthin wegschreiben.
Die eine zu verändernde Zeile änderst Du hierbei entsprechend.
Ist der Inhalt umkopiert, löscht Du die Quelldatei, und benennst die Zieldatei auf den Namen der Quelldatei um.

Wenn das nur gelegentlich passiert, könntest Du die Datei auch einfach in eine TStringList laden, diese durchgehen, bis Du die gewünschte Zeile gefunden hast. Dann die Zeile ändern, und die Datei wieder wegschreiben.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
kenuvis

Registriert seit: 19. Apr 2006
71 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: In TextFile eine Zeile ändern

  Alt 3. Okt 2006, 13:30
ja..... das mit so einer 2. datei hab ich bis jetzt auch immer gemacht.... find das aber nun nicht so schön. zumal die jetztige datei auch mal locker so mehrere mb groß werden kann.
ich dachte mir, da gibts irgendeine andere lösung.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#4

Re: In TextFile eine Zeile ändern

  Alt 3. Okt 2006, 13:58
ich denke mal, mit einer TStringlist lässt sich das vorhaben leichter bewerkstelligen.

Pseudocode:

Delphi-Quellcode:
loadfromfile
for i:=0 to sl.count-1 do
  if isTheLine(sl.strings[i]) then
    sl.strings[i]:=...
sl.savetofile
HTH Frank
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: In TextFile eine Zeile ändern

  Alt 3. Okt 2006, 15:10
Hallo kenu,

wenn du sicherstellen kannst, dass die fragliche Zahl immer den gleichen offset im file hat, dann kannst du die Zahl mit blanks auf eine definierte Länge bringen und den Zähler inplace patchen:

Delphi-Quellcode:
function IncCounter(fn: TFileName; dwOffset, dwLength: Cardinal): Cardinal;
var
  value: String;
begin
  with TFileStream.Create(fn, fmOpenReadWrite or fmShareDenyWrite) do
  begin
    Position := dwOffset;
    SetLength(value, dwLength);
    ReadBuffer(value[1], dwLength);
    Result := StrToIntDef(Trim(value), 0) + 1;
    value := IntToStr(Result);
    Position := dwOffset;
    WriteBuffer(value[1], dwLength);
    Free;
  end;
end;
Getippt und nicht getestet.

Grüße vom marabu
  Mit Zitat antworten Zitat
kenuvis

Registriert seit: 19. Apr 2006
71 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: In TextFile eine Zeile ändern

  Alt 3. Okt 2006, 15:47
kannst du das bitte für einem voll-delphi-idioten nochmals übersetzten. habe von deinem satz nicht viel verstanden.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: In TextFile eine Zeile ändern

  Alt 3. Okt 2006, 19:39
Hallo kenu,

nach deinem Beispiel im Beitrag #1 steht die Zahl (1) an der Stelle 56 (offset 55) - wenn ich mich nicht verzählt habe. Offset gibt an, wieviel Zeichen übersprungen werden sollen. Wenn du also den Wert hochzählen willst, dann kannst du das mit einer Routine machen, wie ich dir eine gegeben habe. Als dwOffset übergibst du dann 55 und als dwLength 1. Damit kannst du aber nur bis 9 hochzählen. Willst du mehr, dann musst du meine Routine geringfügig abändern oder nochmal nachfragen. Hast du denn schon versucht den Code zu verstehen?

Grüße, marabu
  Mit Zitat antworten Zitat
kenuvis

Registriert seit: 19. Apr 2006
71 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: In TextFile eine Zeile ändern

  Alt 3. Okt 2006, 21:01
ja... versucht schon.. ich konnte aber mit dem begriff offset nichts anfangen. dank dir.... ich weiß aber leider nicht, wo die zahl nun steht, kann variieren.
taj.. dann muss ich das wohl mit dem 2 datein machen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:42 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