Autor Beitrag
Telefonkabel
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 15.01.07 17:53 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: Mo 15.01.07 18:32 
Hi Telefonkabel,

ich würds irgendwie so machen:

ausblenden 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'// altes Zeichen
 newChar := 'h'// neues Zeichen
 try
  daten.LoadFromFile('test.dat'); // Datei laden
  s := daten.Text; 
  repeat // solange ...
   INSERT(newChar, s, POS(oldChar, s)); // newChar direkt vor oldChar einfügen
   DELETE(s, POS(oldChar, s), 1); // und oldChar löschen
  until POS(oldChar, s) = 0// ...bis oldChar nicht mehr vorhanden ist.

   daten.Text := s;
  daten.SaveToFile('test.dat'); // Datei speichern 
 finally
  daten.Free;
  end;
end;


Gruß

Saubäär
LLCoolDave
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 212

Win XP
Delphi 2005
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 15.01.07 19:28 
Moin und :welcome: im Forum!

Meinst du vielleicht soetwas: ;)
ausblenden 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
  // Datei binär öffnen
  FileStream := TFileStream.Create('C:\boot.ini',fmOpenRead or fmShareDenyWrite);
  try // versuchen...
    SetLength(DatFile,FileStream.Size); // Platz für die Datei im Speicher machen
    FileStream.Read(PChar(DatFile)^,Length(DatFile)); // Daten lesen
  finally // ...und auf jeden Fall ausführen:
    FileStream.Free; // Datei schließen
  end;
  for i := 1 to Length(DatFile) do // über alle Zeichen in der Datei
    if (DatFile[i] = 'b'then // wenn es ein 'b' ist
      DatFile[i] := 'h'// durch 'h' ersetzen
  Memo1.Text := DatFile; // und dann dem Memo zuweisen

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Mo 15.01.07 19:33 
[OFF-topic ON]
Ich hasse Crosspostings. :-(
==> www.delphipraxis.net...t+datei+aendern.html
[OFF-topic OFF]
Telefonkabel Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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. :)