AGB  ·  Datenschutz  ·  Impressum  







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

Daten in EXE speichern

Ein Thema von Chrissi91 · begonnen am 28. Okt 2005 · letzter Beitrag vom 29. Okt 2005
Thema geschlossen
Seite 1 von 3  1 23      
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#1

Daten in EXE speichern

  Alt 28. Okt 2005, 16:44
Hallo,

ich bin zwar mit der Hilfe sehr schnell fündig geworden, jedoch ergab sich keine komplette Antwort auf diese Frage:

Ich möchte gerne, wie es die Überschrift schon sagt, in eine EXE Datei eine Zeile anfügen, die nur einen Pfad (also string) beinhaltet. Ich habe schon herausgefunden, dass ich das mit Blockread und Blockwirte anstellen soll, aber wie? Zwar habe ich mit Blockread und Blockwrite schon ein wenig Erfahrungen gesammelt , abr dazu reicht es wohl nicht aus.

Ich weiß nicht, ob beim Starten die EXE den Pfad ignoriert in der letzten Zeile oder eine Fehlermeldung ausgibt. Muss ich das vorher rausfiltern? Also wie kann ich eine Zeile speichern, löschen und einlesen? Um Codes wäre ich sehr dankbar

Falls das Ganze in der falschen Spalte gelandet sein sollte, bitte ich dies zu entschuldigen.

MfG

Chrissi91

//edit: Das Angefügte soll nicht verschlüsselt werden
 
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 17:03
Such hier mal nach Hier im Forum suchenResourceupdate.

gruss
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
 
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 17:22
um was ganz hinten an die Datei anzuhängen, musst du sie erst kompilieren. Dann kannst du mit einem anderen Delphiprogramm oder einem geeigneten Editor Daten dazuschreiben. Das würd ich so machen:

Delphi-Quellcode:
  EXE-DATEI, NICHT VERÄNDERN (Notepad macht das automatisch, da es bestimmte Zeichen nicht speichern kann)
  < anzuhängende Daten >
  größe der EXE-DATEI: longint
dann kann sich die EXE so auslesen:

Delphi-Quellcode:
var
  f:file of byte;
  l:longint;
begin
  filemode:=0;
  assignfile(f,application.exename);
  reset(f);
  seek(f,sizeof(f)-4);
  blockread(f,l,4);
  seek(f,l);
  /////Hier kannst du jetzt mit read oder blockread die Daten auslesen.
  closefile(f);
end;
wenn du aber nur einen String speichern willst, würde doch auch eine globale Konstante reichen?

  const pfad:string='C:\qwertzuiop\asdfghjklöä\'´;
Michael Enßlin
 
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#4

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 17:34
Ich glaube du verstehst mich miss ...

Das Programm soll einen immer wieder benutzten Pfad speichern, soll also benutzerfreundlich sein

und das soll einfach nur an die exe

http://www.dsdt.info/tipps/?id=645

Das verstehe ich da nicht:

const ExeSize=205312; Das soll ja eine Variable sein, aber warum das =205312?
 
Benutzerbild von quirks
quirks

Registriert seit: 5. Sep 2004
Ort: Fischbachtal
46 Beiträge
 
Delphi 8 Professional
 
#5

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 17:53
da gabs mal was, ich weiß nur nicht mehr, wo der code ist. eine exe-datei hat nämlich einen header, in dem die effektive größe der _ausführbaren_ datei drinne steht. was dahinter ist, ignoriert windows beim ausführen einfach. den header muss man also auslesen, und kann dann fröhlich alles hintendran auslesen/schreiben.
 
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 18:20
wie ich oben geschrieben hab. du schreibst die größe des ausführbaren codes einfach hinten hin, das kannst du immer auslesen (seek(filesize(f)-4))

Die EXE kann zur Laufzeit nicht geschrieben werden. Das müsstest du über eine DLL machen, die zur Laufzeit der EXE geladen wird, dann wartet bis die EXE zu ist, und dann in die EXE schreibt. (viel zu kompliziert. mach ne tinifile (unit inifiles) oder die registry
Michael Enßlin
 
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#7

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 18:46
Mit registry meinst du sicherlich die Registrierungsdatenbank ... Wie geht das?
 
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 18:49
probier mal tregistry in der Unit registry.
Zitat von Borland Delphi Hilfe:
Das folgende Beispiel liest den Wert eines Registrierungseintrags:
Delphi-Quellcode:
function GetRegistryValue(KeyName: string): string;
var
    Registry: TRegistry;
begin
  Registry := TRegistry.Create(KEY_READ);
  try
        Registry.RootKey = HKEY_LOCAL_MACHINE;
    // false, weil kein Eintrag erzeugt werden soll, sofern er nicht vorhanden ist.
        Registry.OpenKey(KeyName, False);
        Result := Registry.ReadString('VALUE1');
  finally
        Registry.Free;
   end;
 end;
das kannst du ja nach deinen eigenen Bedürfnissen umformen.
Delphi-Quellcode:
procedure savedirname(dirname:string);
var
  r:tregistry;
begin
  r:=tregistry.create(HKEY_CURRENT_USER);
  r.openkey('Software\hersteller\progname\',true);
  r.writestring('dirname',dirname);
  r.free;
end;

function getdirname:string;
var
  r:tregistry;
begin
  r:=tregistry.create(HKEY_CURRENT_USER);
  r.openkey('Software\hersteller\progname\',true);
  result:=r.readstring('dirname');
  r.free;
end;
(jetzt gerade getestet, write geht noch nicht )

sorry für das von vorhin, treginifile is was anderes (was genau )
Michael Enßlin
 
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#9

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 19:04
Sorry, aber mit der Regiertrierungsdatenabnk hatte ich bis jetzt noch nie etwas gemacht ... Das Beispiel (danke dafür ) ist zwar sehr schön, aber könntest du einfach mal inein Verzeichnis 'test' oder sowas schreiben?
Und nochwas ... Ist das nun lesen oder schreiben? Ich bräuchte natürlich beides ...

aso jetzt is es ja da

edit:

Delphi-Quellcode:
function getdirname:string;
var
  r:tregistry;
begin
  r:=tregistry.create(HKEY_CURRENT_USER);
  r.openkey('Software\hersteller\progname\',true);
  result:=r.readstring('dirname');
  r.free;
end;
den sinn verstehe ich net steht doch darüber, oder? 2mal das gleiche ?

result:=r.readstring('dirname'); das liest es ja ein, aber was ist 'dirname'? name des schlüssels oder wie?
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 19:08
Zitat von Chrissi91:
aber könntest du einfach mal inein Verzeichnis 'test' oder sowas schreiben?
Und nochwas ... Ist das nun lesen oder schreiben? Ich bräuchte natürlich beides ...
Also so schwer sind diese zweimal vier zeilen nun auch icht zu verstehen. Was wird wohl ReadStringmachen? lesen oder schreiben? Was wird wohl WriteString machen? lesen oder schreiben? Und wenn man es nicht weiß, dann guckt man es einfach mal in der Hilfe nach. Etwas mitdenken und mitarbeiten wäre nicht schlecht.

@ichbins: Es fehlen jegliche Ressourcenschützblöcke und Openkey leifert einen Rückgabewert zurück, den man nicht ignorieren sollte.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Thema geschlossen
Seite 1 von 3  1 23      


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 06:51 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