AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datei an eine Exe anhängen

Ein Thema von Masteric · begonnen am 24. Feb 2008 · letzter Beitrag vom 24. Feb 2008
Antwort Antwort
Masteric

Registriert seit: 1. Aug 2007
Ort: Melsungen
155 Beiträge
 
Delphi 7 Professional
 
#1

Datei an eine Exe anhängen

  Alt 24. Feb 2008, 15:56
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
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#2

Re: Datei an eine Exe anhängen

  Alt 24. Feb 2008, 16:12
Ich habe mir deinen Code nicht angeschaut aber ich empfehle dir den TExtraResManager

Zitat:
Mit dieser Komponente kann man nachträglich an bereits kompilierte Exe-Dateien sogenannte "Extra-Resourcen" anhängen und natürlich auch wieder auslesen. Bei diesen Extra-Resourcen handelt es sich allerdings nicht um herkömmliche Resourcen, die mit jedem Resource-Viewer erkannt werden können, sondern können nur mit Hilfe dieser Komponente erstellt und ausgelesen werden. Diese Komponente kann einem die Entwicklung von SFX-Archiven oder Setup- und Update-Programmen erheblich erleichtern! Die Komponente enthält auch eine Hilfe-Datei!

Hinweis: Diese Komponente enthält und verwendet Teile des DEC von Hagen Reddmann.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Datei an eine Exe anhängen

  Alt 24. Feb 2008, 16:14
Zitat von Masteric:
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.
Verrätst du uns noch die Fehlermeldung?
  Mit Zitat antworten Zitat
Masteric

Registriert seit: 1. Aug 2007
Ort: Melsungen
155 Beiträge
 
Delphi 7 Professional
 
#4

Re: Datei an eine Exe anhängen

  Alt 24. Feb 2008, 16:33
Es ist ein ein E/A-Fehler 32 das ist ein EINOUTERROR, hatte das schon im ersten Quelltext mit der stelle wo er auftriit angegeben

Masteric
"Programmieren ist eine der universellsten, allübergreifendsten und höchsten von Menschen erreichten Formen der Kreativität."
Nur weil Gott die Welt in 6 Tagen erschaffen hat, heisst das nicht, dass Informatiker alles in 6 Tagen programmieren können.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Datei an eine Exe anhängen

  Alt 24. Feb 2008, 16:38
Mit anderen Worten: er kann die Datei nicht öffnen. Ich würde vermuten, dass ein anderes Programm auf die Datei zugreift oder die Datei schreibgeschützt ist oder erst gar nicht existiert.
  Mit Zitat antworten Zitat
Masteric

Registriert seit: 1. Aug 2007
Ort: Melsungen
155 Beiträge
 
Delphi 7 Professional
 
#6

Re: Datei an eine Exe anhängen

  Alt 24. Feb 2008, 16:52
aber warum kommt der Fehler bei dem Reset?
"Programmieren ist eine der universellsten, allübergreifendsten und höchsten von Menschen erreichten Formen der Kreativität."
Nur weil Gott die Welt in 6 Tagen erschaffen hat, heisst das nicht, dass Informatiker alles in 6 Tagen programmieren können.
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Datei an eine Exe anhängen

  Alt 24. Feb 2008, 17:03
Ich würde meinen, es kommt eine Zeile vorher.
Du versuchst an eine geöffnete Datei etwas anzuhängen -> das geht nicht.
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Datei an eine Exe anhängen

  Alt 24. Feb 2008, 17:11
Zitat von Masteric:
aber warum kommt der Fehler bei dem Reset?
Ganz einfach: Das AssignFile erstellt nur einen Dateihandle, das geht immer. Wie die Datei geöffnet werden soll gibts du mit reset an. Erst dann wird die Datei geöffnet und deshalb knallt es dann.

Damit das Handle auch wieder freigegeben wird solltest du try...finally benutzen.
Delphi-Quellcode:
try
  AssignFile(Handle, 'Dateiname');
  Reset(Handle);
  :
  :
finally
  CloseFile(Handle);
end;
Edit: Reset öffnet normalerweise zum Lesen & Schreiben! Setze mal vor AssignFile FileMode auf fmOpenRead für nur Lesen. (das geht natürlich nur für deine Load-Methode. Schreiben ist nicht, wenn die Anwendung läuft!)

Gruss
Thorsten
  Mit Zitat antworten Zitat
Masteric

Registriert seit: 1. Aug 2007
Ort: Melsungen
155 Beiträge
 
Delphi 7 Professional
 
#9

Re: Datei an eine Exe anhängen

  Alt 24. Feb 2008, 17:45
das dachte ich mir schon, dass ich nichts in die exe schreiben kann... dafür war die Function zwar eigenlich gedacht, aber da kann man nichts machen
"Programmieren ist eine der universellsten, allübergreifendsten und höchsten von Menschen erreichten Formen der Kreativität."
Nur weil Gott die Welt in 6 Tagen erschaffen hat, heisst das nicht, dass Informatiker alles in 6 Tagen programmieren können.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Datei an eine Exe anhängen

  Alt 24. Feb 2008, 17:56
Naja, du könntest deine Schreibfunktionen auch auslagern in eine zweite Anwendung. In der Hauptanwendung startest du dann deine zweite Anwendung und beendest die Erste. Dann kann die zweite Anwendung die Änderungen schreiben, startet wieder die Hauptanwendung und beendet sich. Die zweite Anwendung brauch dabei nur eine Konsolenanwendung zu sein.

Ok, war nur mal kurz laut gedacht...

Gruss
Thorsten
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz