Autor Beitrag
Chrischuh
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 124
Erhaltene Danke: 1

Win 7
Turbo Delphi
BeitragVerfasst: Di 20.01.09 14:47 
Hallo,

ist es möglich eine stringlist in einer exe zu speichern?

ich nutze folgene funktion um eine ressource zu laden:
ausblenden Delphi-Quelltext
1:
ResourceStream:= TResourceStream.Create (hinstance, 'NAME', RT_RCDATA);					

Geht das auch umgekehrt? Also den ResourceStream wieder in den Resourcen speichern.

Wahrscheinlich darf die Exe zur Laufzeit nich geändert werden, deswegen möchte ich das mit einer 2. Exe machen.

Oder ist das unnötig.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 20.01.09 15:55 
Moin!

user profile iconChrischuh hat folgendes geschrieben Zum zitierten Posting springen:
ist es möglich eine stringlist in einer exe zu speichern?
Jain, du kannst aber die Stringliste mit SL.CommaText in einen String verwandeln, welchen du relativ problemlos in Ressourcenblock ablegen können solltest. :idea:

user profile iconChrischuh hat folgendes geschrieben Zum zitierten Posting springen:
Wahrscheinlich darf die Exe zur Laufzeit nich geändert werden, deswegen möchte ich das mit einer 2. Exe machen.
Löschen kann man eine aktive EXE nicht, aber umbenennen, deshalb würde es mich nicht wunden, wenn man auch den Inhalt ändern können sollte. :nixweiss:

Es gab hier mal ein Projekt (ich weiß leider nicht mehr von wem oder wie´s hieß), bei dem es darum ging, Ressourcen zu Lesen und zu Schreiben. Such doch mal ein bischen hier. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 20.01.09 16:05 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Löschen kann man eine aktive EXE nicht, aber umbenennen, deshalb würde es mich nicht wunden, wenn man auch den Inhalt ändern können sollte. :nixweiss:
Nicht direkt, man kann die laufende Exe aber umbenennen, kopieren und dann die neue starten.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 20.01.09 17:01 
So, ich habe grade mal eine kleine Demo geschrieben, diese liegt im Anhang.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
  // Diese laufende Exe umbenennen
  RenameFile(ParamStr(0), ChangeFileExt(ParamStr(0), '.exe.bak'));
  // Und an die ursprüngliche Position kopieren
  CopyFile(PChar(ChangeFileExt(ParamStr(0), '.exe.bak')), PChar(ParamStr(0)), True);
  // Datei mit Originalnamen öffnen
  FileContents := TFileStream.Create(ParamStr(0), fmOpenReadWrite);
  // Jetzt dann verändern...
  ...

  FileContents.Free;
  // Geschriebene Exe ausführen und dafür sorgen, dass die umbenannte Exe
  // von ihr gelöscht wird.
  ShellExecute(Handle, 'open', PChar(ParamStr(0)), '/delbak',
    PChar(ExtractFileDir(ParamStr(0))), SW_SHOWNORMAL);
  // Programm schließen, sonst geht ja kein Löschen
  Close;
Und in FormCreate die zweite Datei löschen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm136.FormCreate(Sender: TObject);
begin
  {$B-} // vollständige boolsche Auswertung aus
  if (ParamCount > 0) and (ParamStr(1) = '/delbak') then
    while FileExists(ChangeFileExt(ParamStr(0), '.exe.bak')) do
    begin
      DeleteFile(ChangeFileExt(ParamStr(0), '.exe.bak'));
      Sleep(1);
    end;
end;


In der Demo hänge ich jetzt Daten an die Exe an, das mache ich aber nur um zu zeigen, dass die Exe so verändert werden kann. Du kannst an der Stelle dann deine Ressource verändern. (Aber da weiß ich aus dem Kopf nicht wo ich da was verändern muss, deshalb hab ich das in der Demo nicht gemacht. ;-))
Einloggen, um Attachments anzusehen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 20.01.09 17:46 
Moin!

@user profile iconjaenicke: Irgendwie sehe ich das Thema jetzt schon mehrfach. :gruebel: Da lohnt doch schon fast ein FAQ-Eintrag, oh großer Tutorializer... :zustimm:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 20.01.09 19:53 
Aus der Überlegung heraus habe ich das auch geschrieben. ;-)
Aber ich bin mit dem letzten ja noch nicht fertig. Und und... :mrgreen:

Aber sonst hätte ich bei einem Beispiel nicht so darauf geachtet, dass es einigermaßen sauber geschrieben ist. :mrgreen:
Chrischuh Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 124
Erhaltene Danke: 1

Win 7
Turbo Delphi
BeitragVerfasst: Di 20.01.09 20:31 
super, genau was ich gesucht hatte. Danke
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 26.01.09 07:51 
Ich habe soeben eine einfach zu benutzende Lösung als Beta veröffentlicht:
www.delphi-forum.de/viewtopic.php?p=545927
Im FAQ Beitrag werde ich diese genauer erklären, und ich bin dabei diese für Delphi 3-6 und Delphi 2009 anzupassen.
www.delphi-library.d...ewtopic.php?p=545198