Entwickler-Ecke
Dateizugriff - Text in einer *.dat Datei ändern
Telefonkabel - Mo 15.01.07 17:53
Titel: Text in einer *.dat Datei ändern
Hy!
Ich habe ein Problem und zwar würde ich gerne eine *.dat Datei im Hintergrund laden und dort Zeichen ändern. (z.B. jedes 'b' durch 'h' ersetzten, etc.)
OK, gesagt getan. Ich hab also versucht das ganze erstmal in ein Memo zu laden, doch werden mir da nur ein paar Zeichen angezeigt. Deshalb hab ich daran gedacht (nicht probiert) die Zeichen, an der wohl die Memo scheitert, zu löschen, doch das kann ich auch nciht tun, da sonst die .dat nicht mehr funktionieren würde.
Kann mir irgendjemand helfen?
MfG
Telekab
Saubäär - Mo 15.01.07 18:32
Hi Telefonkabel,
ich würds irgendwie so machen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| var s: String; newChar, oldChar: Char; begin daten := TStringList.Create; oldChar := 'b'; newChar := 'h'; try daten.LoadFromFile('test.dat'); s := daten.Text; repeat INSERT(newChar, s, POS(oldChar, s)); DELETE(s, POS(oldChar, s), 1); until POS(oldChar, s) = 0; daten.Text := s; daten.SaveToFile('test.dat'); finally daten.Free; end; end; |
Gruß
Saubäär
LLCoolDave - Mo 15.01.07 18:59
Ich schätz einfach mal wild ins Blaue hinein dass in der .dat irgendwo ein #0 oder EOF vorkommt, und das Memo dann (berechtigterweise) denkt, da ist schluss.
Narses - Mo 15.01.07 19:28
Moin und :welcome: im Forum!
Meinst du vielleicht soetwas: ;)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var DatFile: String; FileStream: TFileStream; i: Integer; begin FileStream := TFileStream.Create('C:\boot.ini',fmOpenRead or fmShareDenyWrite); try SetLength(DatFile,FileStream.Size); FileStream.Read(PChar(DatFile)^,Length(DatFile)); finally FileStream.Free; end; for i := 1 to Length(DatFile) do if (DatFile[i] = 'b') then DatFile[i] := 'h'; Memo1.Text := DatFile; |
cu
Narses
Telefonkabel - Di 16.01.07 21:36
Ich danke euch, es funktioniert nun.
Hab es in einen Filestream gespeichert, den nach und nach ausgelesen und wenn er auf einen Treffer gestoßen ist, dann hat ers geändert. :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!