Registriert seit: 17. Jan 2007
1.169 Beiträge
Turbo Delphi für Win32
|
Re: Anzahl von Bytes aus Datei ausschneiden/löschen
14. Mär 2007, 12:43
Hallo,
geht es so? Im Memo sieht es aber wegen fehlender Steuerzeichen etwas komisch aus.
Delphi-Quellcode:
function PosEx_(const SubStr, S : String; Offs: integer = 1): integer;
begin
Result:= 0;
if (Offs> 0) and (Offs<= length(S))then
begin
Result:= Pos(SubStr, string(@S[Offs]));
if Result> Length(S)- Offs then
Result:= 0;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var fs: tfilestream;
buffer, Pfad, WVerarbeitung: AnsiString;
Anfang, Ende: integer;
begin
Pfad:= 'c:\Test.csa';
if FileExists(Pfad) then
begin
fs := TFileStream.Create(Pfad, fmOpenRead);
try
SetLength(Buffer, fs.Size);
fs.Seek(0, soFromBeginning);
fs.Read(buffer[1], length(buffer));
WVerarbeitung:= '';
Anfang:= pos('@@DOCUWARE_', buffer);
Ende:= PosEx_( '@@', buffer, Anfang+ 10);
while (Anfang<> 0) do
begin
WVerarbeitung:= WVerarbeitung+ Copy(buffer, Anfang, Ende+ 11);//+#13#10;
Delete(buffer, Anfang, Ende+ 11);
Anfang:= pos('@@DOCUWARE_', buffer);
Ende:= PosEx_( '@@', buffer, Anfang+ 10);
end;
caption:= 'Ausgeschnittene Länge= '+ inttostr(length(WVerarbeitung))+ ' Bytes';
Memo1.Lines.Text:= WVerarbeitung;
finally
fs.free;
end;
fs := TFileStream.Create(ChangeFileExt(Pfad, '.pcl'), fmCreate);
try
fs.Seek(0, soFromBeginning);
fs.Write(buffer[1], length(buffer));
finally
fs.Free;
end;
end;
end;
Mein Delphi 6 hat leider kein PosEx.
EDIT: Der geänderte Inhalt vom buffer wird jetzt als "PCL" Datei abgespeichert.
Gruß bitsetter
"Viele Wege führen nach Rom" Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
|
|
Zitat
|