Autor Beitrag
Niels_
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 117



BeitragVerfasst: Mo 22.03.04 17:06 
Weiß jemand wie es möglich ist, am Dateianfang etwas zu löschen und dannach auch wieder was reinzuschreiben (auch am Dateianfang) ohne die ganze Datei in variablen umzuschreiben oder eine andere Datei zu benutzen???
Bin mit meinem Delhpianisch am Ende...
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mo 22.03.04 19:29 
imho bleibt dir nur übrig, die gesamte Datei in den Speicher zu laden, schau dir mal dazu die Funktion MapFile(..) an.
grez
sch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: So 04.04.04 09:44 
da gibst nur eine möglichkeit:

du nimst dir zwei stream variablen
und schreibst dir die eine in der zweiten datei ein etwa so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure Loesche_Datei_Anfang(neuerText:String; Datei:TFileName);
var
  Stream1, Stream2:TFileStream;
  Write:TWriter;
beginn
  Stream1:=TFileStream.Create(Datei,fmOpenRead);
  Stream2:=TFIleStream.Create(datei+'.tmp',fmCreate);
  Write:=TWriter(Stream2,10);

  try
    Stream1.Pos:=Length(neuerText);
    Write.WriteString(neuerText);
    Stream2.CopyForm(Stream1,Stream1.Size);
    
  finally
    Stream1.Free;
    Stream2.Free;
    Write.Free;
    delteFile(Datei); RenameFile(datei+'.tmp',datei);
    
  end;
end;


ich hoffe diese proc funktioniert so, habe ich ebend hingeschrieben, beschreibung:
1. zwei Stream werden erstellt, der erste zum lesen und der zweit zum schreiben
2. die postion vom ersten stream wird auf die länge vom neuen Text gesetzt
3. Der neue text wird in Stream2 reingeschrieben und anschließent wird mit copyForm der rest von Stream1.Pos in Stream2 reingeschrieben.
4. Zum Schluß wird einfach nur noch die alte datei gelöscht und die tempdatei umbennant in der neuen datei.

hinweiß:
hirmit kannst du auch bin datein ändern

_________________
MFG
Michael Springwald, "kann kein englisch...."