Autor Beitrag
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 26.01.09 08:45 
Hallo!

Vor kurzem kam (wieder einmal) die Frage wie man Daten an die eigene laufende Exe anhängen kann. Direkt eine laufende Exe manipulieren kann man ja nicht, aber man braucht auch kein zweites Programm dazu. Zunächst hatte ich in dem entsprechenden Beitrag eine schnelle Lösung gepostet, habe mir aber auch überlegt, wie man das vereinfachen kann.

Da bin ich schnell auf die Idee gekommen einfach eine eigene Streamklasse zu benutzen. Man kann diese Klasse jetzt einfach wie andere Nachfahren von TStream (TFileStream, TMemoryStream, ...) benutzen. Um Strings zu lesen und schreiben gibt es zusätzlich ReadString und WriteString.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  FileContents: TExeDataStream;
begin
  FileContents := TExeDataStream.Create();
  try
    FileContents.WriteString(Memo1.Text);
  finally
    FileContents.Free;
  end;
Mit Free wird automatisch die alte Exe ersetzt und beendet, die neu erstellte gestartet und die alte gelöscht.
Dies ist noch nicht die Ideallösung, ich mache mir gerade Gedanken um eine saubere Lösung, auch im Hinblick auf nötige Administratorrechte, die ich im Moment noch nicht berücksichtige. Dafür habe ich eine mehrstufige, aber integrierte, Lösung im Kopf, die ich noch ergänzen werde.

Eine genauere Erklärung zur Funktionsweise inkl. Demo habe ich hier in den FAQ geschrieben:
www.delphi-library.d...ewtopic.php?p=545198

Getestet mit:
  • Delphi 7
  • Delphi 2006
  • Delphi 2007
  • Delphi 10.4 Community Edition

Bekannte Probleme:
  • Das Programm braucht derzeit direkt Administratorrechte, wenn diese für das Schreiben in das eigene Verzeichnis nötig sind. Eine saubere Lösung, die diese (ggf. per UAC) anfordert, ist in Arbeit.
  • Delphi 2009 kompiliert jetzt zwar, es gibt aber einen Laufzeitfehler


Ebenfalls gepostet hier:
forum.delphi-treff.d...owthread.php?t=26709
www.delphipraxis.net/post1043105.html

Schönen Gruß,
Sebastian
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von jaenicke am So 26.02.23 09:47, insgesamt 5-mal bearbeitet
jaenicke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 23.06.09 09:15 
Es gibt eine neue Version. Erstens gibt es jetzt auch eine Demo inkl. kompilierter Version, zweitens kann man jetzt wie von jemandem gewünscht wurde auch eine externe Exe bearbeiten.

Delphi 2009 werde ich in einer späteren Version unterstützen.
jaenicke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 06.11.09 13:57 
Da weder mir selbst Fehler aufgefallen sind, noch welche gemeldet wurde, gibt es jetzt die Final mit kleineren Korrekturen und einer ordentlich geschriebenen Demo ohne potentielle Speicherlecks.

Die Berücksichtigung der Adminrechte ist in Arbeit, wobei ich dafür auf die Technik meiner Updater Utils zurückgreifen werde. Dafür bin ich dabei die entsprechenden Routinen universeller zu gestalten und die ToDo-Einträge dieses Projekts abzuschließen.

Eine Unterstützung von Delphi 2009 und 2010 plane ich für die Version 1.0, wie auch die Integration der Adminrechte. Diese wird aber nicht mehr dieses Jahr herauskommen.
Ebenfalls in der Planung dabei ist eine erweiterte Inhaltsverwaltung ähnlich wie bei Ressourcen, wie von toms in der DP angesprochen. Das wird aber erst nach den anderen Features kommen.