Hi, ich wollte mit einem Code aus dem Delphi-Treff eine Datei 'temp.cfg' an meine Exe anhägen, nur leider kommt immer eine Fehler Meldung. Hier erstmal der Code:
Delphi-Quellcode:
function Save(ExeSize:integer; Mem:TMemo):boolean;
var f2: file;
aHdl: Integer;
gelesen: longInt;
aBuf: Array[1..40000] of byte;
Groesse: LongInt;
begin
Mem.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'temp.cfg');
AssignFile(f2,ExtractFilePath(Application.ExeName)+ExtractFileName(Application.ExeName));
Reset(f2, 1);// Hier kommt ein E/A-Fehler 32 das ist ein EINOUTERROR.
Groesse:=FileSize(f2);
CloseFile(f2);
aHdl:=FileOpen(ExtractFileName(Application.ExeName),fmOpenReadWrite);
FileSeek(aHdl,Groesse,0);
AssignFile(f2,ExtractFilePath(Application.ExeName)+'temp.cfg');
Reset(f2,1);
while not Eof(f2) do
begin
BlockRead(f2,abuf,sizeof(abuf),gelesen);
FileWrite(aHdl,abuf,gelesen);
end;
CloseFile(f2);
DeleteFile('temp.cfg');
end;
Ich habe bis jetzt nichts passendes gefunden, ahbe aber eine Vermutung...
Das hier ist die Function, mit der ich die Datei wieder aus der exe bekomme, die wird vor der oben ausgeführt,
meine Vermutung ist, dass es daran liegt, da es ohne die zum Lesen wunderbar funktioniert..
Delphi-Quellcode:
function Load(ExeSize:integer; Mem:TMemo):boolean;
var aHdl:Integer;
aBuf:Array[1..40000] of byte;
Gelesen: LongInt;
f: file;
begin
aHdl:=FileOpen(Application.ExeName, fmShareDenyNone or fmOpenRead);
FileSeek(aHdl, ExeSize, 0);
AssignFile(f, ExtractFilePath(Application.ExeName)+'temp.cfg');
ReWrite(f, 1);
Gelesen:=FileRead(aHdl,aBuf,SizeOf(aBuf));
while Gelesen>0 do
begin
BlockWrite(f,aBuf,Gelesen);
Gelesen:=FileRead(aHdl,aBuf,SizeOf(aBuf));
end;
CloseFile(f);
FileClose(aHdl);
Mem.Lines.Loadfromfile(ExtractFilePath(Application.ExeName)+'temp.cfg');
end;
Hoffe mal, dass man dadurch kommt.
Masteric