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 2 von 3     12 3      
Chrissi91

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

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 20:10
Ja ... aber da war ja auch nur eines der beiden da ... und zwar anders geschrieben
 
ichbins

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

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 20:11
'dirname' is der Name des Eintrags im schlüssel. Mal kommentiert:

Delphi-Quellcode:
function getdirname:string;
var
  r:tregistry;
begin
  r:=tregistry.create(HKEY_CURRENT_USER); //Registry-Variable wird erstellt und auf HKEY_CURRENT_USER (Datenbank des aktuellen Users (ohne Admin-Rechte schreibbar) eingestellt
  r.openkey('Software\hersteller\progname\',true); //Der Key HKEY_CURRENT_USER\Software\Hersteller\Programme\ wird geöffnet. Falls er nicht existiert, wird er erstellt (durch das true)
  result:=r.readstring('dirname'); //Der Inhalt des Eintrags 'Dirname' im Key HKEY_CURRENT_USER\Software\Hersteller\Programme\ wird eingelesen
  r.free;
end;

@luckie: Ich denke mal einfach, der User hat ein Recht, in seine eigene (HKEY_CURRENT_USER) Registrierungsdatenbank zu schreiben und auch der Ram ist nicht voll oder so. Was sind resourcenschutzblöcke
Michael Enßlin
 
Benutzerbild von Luckie
Luckie

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

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 20:24
Zitat von ichbins:
@luckie: Ich denke mal einfach, der User hat ein Recht, in seine eigene (HKEY_CURRENT_USER) Registrierungsdatenbank zu schreiben
Sollte er, aber man darf beim Programmieren nichts für sicher annehmen.

Zitat:
Was sind resourcenschutzblöcke
Delphi-Quellcode:
try

finally

end;
So wie es in dem Code steht, den du zitiert hast.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
ichbins

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

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 20:35
es sollte ja nur ein unoptimierter kleiner Beispielscode sein.
Michael Enßlin
 
Benutzerbild von Luckie
Luckie

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

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 20:43
Und woher soll ein Anfänger wissen, wie es richtig aussieht?
Michael
Ein Teil meines Codes würde euch verunsichern.
 
ichbins

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

Re: Daten in EXE speichern

  Alt 28. Okt 2005, 21:00
ich glaubs ja... aaaaaaber wenn du mal nach dem Beispiel in der Delphi-OH schaust, siehst du, dass es die borlander auch nicht besser machen:
Wenn du den Code rauskopierst, lässt er sich erst mal gar nicht compilieren, da die Variablennamen unterschiedlich aus dem englischen übersetzt wurden. Dann sind da so komische zeichen drin (#17, usw), bei denen der Compiler eine Fehlermeldung bringt und letztendlich wird das openkey-result auch nicht abgefragt.

--> Hilfe von D7 Pers, andere weiss ich nicht.

(eigentlich ja eine OT-Diskussion...)
Michael Enßlin
 
Benutzerbild von Luckie
Luckie

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

Re: Daten in EXE speichern

  Alt 29. Okt 2005, 03:27
Der Übersetzungsfehler ist ein Fehler des Übersetzers und nicht von Borland.
Die Zeichen stam,men wohl aus dem Hilfeformat, aquch nicht Borlands schuld.
Und auch die Borländer sind keine fehlerlosen Götter.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Chrissi91

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

Re: Daten in EXE speichern

  Alt 29. Okt 2005, 10:43
Also, da das mit den Daten in der EXE speichern nicht so einfach ist, lass ich es

Langsam wirds OT
 
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#19

Re: Daten in EXE speichern

  Alt 29. Okt 2005, 10:53
Such mal nach dem ExtraResManager damit kannst Du sehr leicht Daten an exe'n anhängen. Um Daten an die eigene exe zu hängen gehst Du dann wie folgt vor:
1. Kopie der eigenen exe in Tempordner
2. Extraresourcen anhängen
3. Batch schreiben, welche die eigene Datei löscht und anschließend die Kopie aus dem Temmpordner über die aktuelle Version kopiert und dann das Programm startet
4. Batch "hidden" ausführen
5. Programm beenden

Die Lösung für 3. findest Du bei den Schweizern...
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
 
ichbins

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

Re: Daten in EXE speichern

  Alt 29. Okt 2005, 11:18
vielleicht wär die Registry dannn doch noch einfacher. Am leichtesten geht es ja mit ner Inifile:

Delphi-Quellcode:
uses inifiles;
[...]
procedure savedirname(dirname:string);
var
  i:tinifile;
begin
  try begin
  i:=tinifile.create(changefileext(application.exename,'.ini'));
  //Ini-Datei erstellen
  i.writestring('Dirs','Path',dirname);
  //Eintrag in Datei speichern
  i.Free;
  //Datei schließen
  filesetattr(changefileext(application.exename,'.ini'),fasysfile and fahidden)
  //Datei verstecken
  end; except end;
end;

function getdirname:string;
var
  i:tinifile;
begin
  result:=extractfilepath(application.exename)
  //zuerst alternatives Ergebniss setzten (pfad der EXE-Datei)
  try begin
    i:=tinifile.create(changefileext(application.exename,'.ini'));
    //Dann Inifile erstellen. Die Inifile erhält den Namen der EXE-Datei nur mit der Endung .ini statt .exe
    result:=i.ReadString('Standard','Dirname',extractfilepath(application.ExeName));
    //Aus der Sektion STANDART der Inidatei wird der Wert von dirname eingelesen.
  end; finally
    i.free;
    //Die Inidatei wird geschlossen
  end;
end;
(ungetestet)

Ich weiss auch gar nicht, wieso es dir so wichtig ist, unbedingt die Daten in der eigenen Exe abzuspeichern? Das ist die komplizierteste mögliche Lösung...

Ne INI-Datei tuts ja auch...

Außerdem kannst du die INI-Datei auch verstecken usw so dass der User sie nicht sehen kann.

Die beiden Prozeduren kopierst du dann irgendwo ziemlich oben in deine Unit rein (am besten gleich nach IMPLEMENTATION). Dann kannst du sie so aufrufen:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  pathname:=getdirname;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  savedirname(pathname);
end;
wobei pathname eine globale string-variable ist, auf die du in allen anderen Prozeduren zugreifen kannst.
Michael Enßlin
 
Thema geschlossen
Seite 2 von 3     12 3      


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 15:34 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