AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TExeDataStream 0.5 - Daten an die Exe anhängen
Thema durchsuchen
Ansicht
Themen-Optionen

TExeDataStream 0.5 - Daten an die Exe anhängen

Ein Thema von jaenicke · begonnen am 30. Mai 2009 · letzter Beitrag vom 26. Feb 2023
Antwort Antwort
Benutzerbild von jaenicke
jaenicke
Registriert seit: 10. Jun 2003
Hallo!

Vor einer Weile kam im DF (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.
Delphi-Quellcode:
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.

Die Unit liegt im Anhang. Eine genauere Erklärung zur Funktionsweise habe ich hier in den FAQ gepostet:
http://www.delphi-library.de/viewtopic.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:
http://www.delphi-forum.de/viewtopic.php?t=89659
http://forum.delphi-treff.de/showthread.php?t=26709

Schönen Gruß,
Sebastian
Angehängte Dateien
Dateityp: zip SJExeDataStream0.6.zip (966,5 KB, 13x aufgerufen)
Dateityp: zip SJExeDataStream0.6_src.zip (33,5 KB, 20x aufgerufen)

Geändert von jaenicke (26. Feb 2023 um 08:48 Uhr)
 
Benutzerbild von markus5766h
markus5766h

 
Delphi XE8 Professional
 
#2
  Alt 3. Jun 2009, 19:06
Hallo,
wäre das nicht noch eine mögliche Option
in Deinen SJ Config Utils ??
Markus H.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#3
  Alt 3. Jun 2009, 19:29
Das Problem sind bei dem Projekt hier vor allem die Adminrechte. Erst einmal bin ich dabei ein Updateframework zu entwickeln, das mit Adminrechten korrekt arbeitet. Dann baue ich auch dies hier entsprechend um, so dass ggf. die UAC anspringt. Und wenn das alles klappt, dann überlege ich weitere Optionen.

Grundsätzlich ist die Kombination dieser beiden Projekte kein Problem, viel zu ändern ist da ja nicht.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms

 
Delphi XE Professional
 
#4
  Alt 3. Jun 2009, 19:37
Hallo Sebastian

Ich habe mir deine Komponente (noch) nicht genauer angeschaut.
Erinnere mich jedoch, dass Motzi auch mal eine solche Komponente erstellt hat.
Vielleicht gibt sie dir Ideen, vielleicht auch nicht.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#5
  Alt 3. Jun 2009, 19:53
Ja, die kannte ich noch nicht, sieht recht umfangreich aus, mal schauen.

Der große Vorteil meiner Lösung ist ja vor allem, dass man das einfach wie TMemoryStream oder andere Nachfahren von TStream überall verwenden kann. So dass das wie TResourceStream sehr einfach benutzt werden kann.

IDs und so wären wie in Motzis Lösung vielleicht sinnvoll, aber die Verwaltung des Inhalts kann man ja auch selbst machen. Wichtig war mir nur, dass man einfach einen normalen Stream benutzen kann, der das automatisch an die Exe anhängt und ausliest.

Das mit den Adminrechten erfordert noch ein wenig mehr Aufwand und IPC, das mache ich dann erst nach dem Updateframework, das ich in den nächsten Tagen funktionsfähig haben werde.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#6
  Alt 23. Jun 2009, 09:00
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.

Zitat von markus5766h:
wäre das nicht noch eine mögliche Option in Deinen SJ Config Utils ??
Dort habe ich dieses Projekt jetzt integriert, es ist als Option für alle drei Formate (XML, INI, Stream) vorhanden.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#7
  Alt 6. Nov 2009, 12: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 angesprochen. Das wird aber erst nach den anderen Features kommen.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Dawn87

 
Delphi XE5 Professional
 
#8
  Alt 25. Jan 2012, 15:56
Hallo jaenicke,

gibt es von Deiner Klasse mittlerweile auch eine Version die Delphi ab Version 2009 unterstützt?

Beste Grüße
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#9
  Alt 25. Jan 2012, 16:23
Nein, aber wenn da Interesse besteht, schaue ich es mir einmal an, das sollte eigentlich kein Problem sein. Um genau zu sein habe ich vermutlich ohnehin schon eine passende Version. Ich schaue mal.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#10
  Alt 26. Feb 2023, 09:04
Ich habe einmal eine neue Version hochgeladen, die mit der 10.4 Community Edition erstellt wurde. Ansonsten gibt es keine Änderungen.
Sebastian Jänicke
  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 14:39 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