AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal FreePascal Programm Build - dynamisch erzeugen
Thema durchsuchen
Ansicht
Themen-Optionen

Programm Build - dynamisch erzeugen

Ein Thema von thomasschaf · begonnen am 12. Mär 2012 · letzter Beitrag vom 13. Mär 2012
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.715 Beiträge
 
Delphi 12 Athens
 
#1

AW: Programm Build - dynamisch erzeugen

  Alt 12. Mär 2012, 16:04
Mal abgesehen davon, daß das sicher realisierbar ist (Delphi selbst ist ja im Grunde auch nichts anderes), stellt sich die Frage, ob man es so realisieren sollte.

Ich gehe zwar davon aus, daß dein Beispiel mit dem Label nur fiktiv ist, aber das könnte man mit einer fertig compilierten EXE, die eine Konfigurationsdatei liest, wesentlich einfacher und schneller hinkriegen.

Beschreib doch einfach mal, was du wirklich machen willst.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Programm Build - dynamisch erzeugen

  Alt 12. Mär 2012, 16:09
Die Frage ist viel eher, was will er damit erreichen. Man kann sein jetztiges Vorhaben auch ganz einfach lösen, indem man einfach Daten/Flags hinten an die Kopie der Exe dran macht und bei jedem Start prüft, ob was da ist und darauf reagiert...
Aber in was für einem Ausmaß der das braucht und wie komplex das dann wird, ist für mich ungewiss!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
thomasschaf
(Gast)

n/a Beiträge
 
#3

AW: Programm Build - dynamisch erzeugen

  Alt 12. Mär 2012, 16:44
Vielen Dank für die zahlreichen Antworten :)

Einen konkreten Anwendungsfall habe ich nicht, dies war eher eine theoretische Frage.
Meistens suche ich mir zuerst die Lösung, dann das Problem, es wird sicherlich eines kommen, in dem ich dies anwenden kann.

Die Idee von uligerhardt halte ich für sehr treffend.
Leider ist UpdateResource neu für mich, daher muss ich mich damit zunächst beschäftigen.
Übrigens müsste man gar keine Kopie von Programm B mitliefern, da ich Programm B als Ressource in mein Programm A einbauen kann. Beim Button-Klick wird die Ressource extrahiert und dann im Programm B mit UpdateRessource der String / die Strings ersetzt.
Desweiteren hoffe ich, dass ich aus dem String ABC auch wxyz machen kann, also unterschiedliche Zeichenlänge, was mit einem "normalen" Hexeditor nicht geht :(

Gruß,
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
10.017 Beiträge
 
Delphi 12 Athens
 
#4

AW: Programm Build - dynamisch erzeugen

  Alt 12. Mär 2012, 16:56
Desweiteren hoffe ich, dass ich aus dem String ABC auch wxyz machen kann, also unterschiedliche Zeichenlänge, was mit einem "normalen" Hexeditor nicht geht
Schau dir einfach meinen Link an, da passiert genau das.
Du kannst in der Demo in einem Memo Text eingeben und anhängen, beim nächsten Start ist der dann beim Start im Memo.

Da du mit Lazarus arbeitest, wäre UpdateResource wohl weniger sinnvoll, da es eine Windows API Funktion ist. Und Lazarus ist ja vor allem für Cross Plattform sinnvoll, was dann damit nicht mehr ginge. Meine Lösung macht das selbst.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
thomasschaf
(Gast)

n/a Beiträge
 
#5

AW: Programm Build - dynamisch erzeugen

  Alt 12. Mär 2012, 17:58
Diese Lösung scheint mir doch die einfachste.
Soweit ich es getestet habe, schein es auch zu funktionieren.

Danke für den Link.
  Mit Zitat antworten Zitat
thomasschaf
(Gast)

n/a Beiträge
 
#6

AW: Programm Build - dynamisch erzeugen

  Alt 13. Mär 2012, 15:01
Nun wollte ich die andere Möglichkeit mit UpdateResource noch ausprobieren.

Wie man damit eine Resource in einer exe-Datei ändert habe ich schon herausgefunden.
Wie / wo kann ich diese Resource erstellen, die in dem zu ändernden Programm enthalten sind ?


Edit:
Jetzt weiß ich nicht wo der Fehler steckt.
Ich habe eine Resource in Programm B per lrs-file eingebunden.
Diese kann ich im Programm B selber abfragen:
LazarusResources.Find('text').Value; (Die Resource heißt text)

Ich hoffte, diese mit Programm A ändern zu können, hier mein Code:
Delphi-Quellcode:
function SetRes(filename, resname, resvalue: string): boolean;
var
  hUpdate: THandle;
  Size: DWord;
begin
  hUpdate := BeginUpdateResource(PChar(filename), True);
  if (hUpdate <> 0) and (hUpdate <> INVALID_HANDLE_VALUE) then
  begin
    try
      Size := Succ(Length(resvalue)) * SizeOf(char);
      Result := UpdateResource(hUpdate, RT_RCDATA, PChar(resname),
        0, PChar(resvalue), Size);
    finally
      EndUpdateResource(hUpdate, False);
    end;
  end;
end;
folgende Parameter verwende ich:
Syntax: SetRes('ProgrammB.exe','text','Ein Test...') Der einzige Unterschied, den ich in B festmachen kann, ist, dass das Design anders ist; ein Button wird nicht mehr blau sondern eher gräulich ist, es erinnert an win98(?).

Edit^2: habe den namen auch mal von "text" umbenannt, aber es funktioniert nicht!

Vielen Dank

Geändert von thomasschaf (13. Mär 2012 um 16:42 Uhr) Grund: Informationen hinzugefügt
  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 12:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz