![]() |
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 |
Re: Text in einer *.dat Datei ändern
Die Daten kannst Du nicht in einem Memo anzeigen lassen, da in den binären
Daten auch Steuerzeichen enthalten sind. Du könntest die Daten in ein TFileStream einlesen und dort bearbeiten. Beispiele zu TFileStream oder auch die gepufferte Version dazu findest Du hier im Forum. Grüße Klaus |
Re: Text in einer *.dat Datei ändern
Zitat:
![]() |
Re: Text in einer *.dat Datei ändern
Danke. And einen Filestream hab ich auhc schon gedact gehabt, doch stellte sich mir da die Frage, wie ich in diesem Filestream rumwurschteln kann. Ich meine, es ist ja kein normaler String, also sollte es doch etwas komplizierter sein eben z.B. jedes 'b' durch 'h' zu ersetzten, oder?
EDIT: @St. Pauli Heißt das, dass ich die Datei in einen String speichern und dort bearbeiten könnte, solange ich sie ncith anzeige? MfG Telekab. |
Re: Text in einer *.dat Datei ändern
Vielleicht bietet Dir dieser Thread ein wenig Anregung: ->
![]() Grüße Klaus |
Re: Text in einer *.dat Datei ändern
Herzlich willkommen in der Delphi-PRAXiS, Telefonkabel.
Wenn deine Datei offensichtlich Binärdaten enthält, wirst du zuerst den genauen Aufbau der Datei ermitteln müssen, bevor du ein Zeichen in ein anderes übersetzen kannst. Du musst bei jedem Zeichen zweifelsfrei wissen, dass es kein Binärwert ist, sondern wirklich ein Text-Zeichen. Freundliche Grüße vom marabu |
Re: Text in einer *.dat Datei ändern
![]() MfG Ingo aus der Anti-Crossposting-Bewegung ;-) |
Re: Text in einer *.dat Datei ändern
Hier erstmal 2 Funktionen, um eine Datei in einen String zu laden
und einen String als Datei zu speichern:
Delphi-Quellcode:
Damit kannst du Dateien bis max. 2GB laden und speichern.
function FileToString(const FileName: string): AnsiString;
var fs: TFileStream; Len: Integer; begin fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try Len := fs.Size; SetLength(Result, Len); if Len > 0 then fs.ReadBuffer(Result[1], Len); finally fs.Free; end; end; procedure StringToFile(const FileName: string; const Contents: AnsiString); var fs: TFileStream; Len: Integer; begin fs := TFileStream.Create(FileName, fmCreate); try Len := Length(Contents); if Len > 0 then fs.WriteBuffer(Contents[1], Len); finally fs.Free; end; end; Ein String (genauer AnsiString) kann ja ohne Probleme auch nichtdruckbare Zeichen und auch die Hex-0 (#0) aufnehmen. Mit etwas Stringverarbeitung kannst du die Daten nach Belieben verändern. |
Re: Text in einer *.dat Datei ändern
OK, es funktioniert nun beinahe alles, danke euch.
Ich habe nurnoch ein Problem, und zwar wird die Buchstabenänderung in einer Procedure gemacht, dabei wird der Buchstabe in den das ganze geändert werden soll, als String an die Procedure gegeben. Die Änderung erfolgt auch soweit, nur wird statt des eingegeben Buchstaben irgendein anderes Zeichen eingefügt, wie z.B. statt einem 'D' ein 'î', oder sowas. Wenn ich aber diesen Buchstaben in der Procedure in ein Memo gebe, dann ist es eben wie in dem Beispiel ein 'D'. Was kann ich dagegen tun? @Ingo Sorry, wusst ich nicht, ich dachte einfach, dass mir so schneller geholfen werden kann. |
Re: Text in einer *.dat Datei ändern
Zitat:
Denn: Zitat:
Wenn du verstehst, was ich meine ... :idea: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz