Autor Beitrag
Robii
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236



BeitragVerfasst: Mi 26.05.10 14:12 
Guten Mittag,

ich habe eine Frage. Und zwar habe ich ein Programm gebastelt in dem man verschiedene Parameter einstellen kann, z.B. Title einer Form usw. Jetzt möchte ich gerne, das wenn man auf den Generate-Knopf drückt, eine *.exe erstellt wird die meine forgefertigten Funktionen beherscht und und die vorher eingegebenen Parameter verwendet. Also quasi einen Compiler?
Ist dies möglich & wenn ja, wie?

Lieben Gruß,
robii.


Moderiert von user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Mi 26.05.2010 um 14:41
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 26.05.10 14:45 
Moin!

Möglich ist vieles, die Frage ist eher, wieviel Sinn das macht oder ob es nicht bessere Alternativen gibt. ;)

Man kann nicht mal so eben einen Compiler "bauen", aber man kann den Delphi-Compiler für sowas nutzen (irgendwann ist die CLI-Version rausgefallen, bei D7 ist sie jedenfalls noch dabei). Das ist aber eine ziemlich frickelige Aktion, würde ich von abraten. :?

Warum gestaltest du die Anwendung nicht so, dass sie parametriert läuft? Einfach eine Konfigurationsdatei dazu tun, in der die "Einstellungen" abgelegt sind. Notfalls kann man sowas auch binär an die EXE-Datei dranhängen (user profile iconjaenicke hat dazu mal eine Unit entwickelt). :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Robii Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236



BeitragVerfasst: Mi 26.05.10 15:15 
Ich glaube ich beschreibe nochmal genauer was ich meine :)

Und zwar habe ich ein Programm geschrieben, mit dessen Hilfe man einen Client erstellen kann. In diesem Hauptprogramm kann man eintragen, wie die Ip/ der Port des Servers heißt z.B. Hat man alles eingetragen, kann man auf 'Generieren' klicken und es wird eine Client.exe ausgegeben, die die Ip & den Port beinhaltet und nur noch gestartet werden muss und sich dann automatisch mit dem im Hauptprogramm angegeben Server verbindet. Das ganze soll einem kleinen Chat dienen, den ich gerne mit einem Freund betreiben möchte.

Lieben Gruß,
robii.
Webo
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 577
Erhaltene Danke: 14

Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
BeitragVerfasst: Mi 26.05.10 15:28 
Ich glaube soweit war auch alles klar, es ging eher darum dass diese Aufgabe eines Compilers gleich käme. Dieses wiederum wäre nicht mal eben so geschrieben. user profile iconNarses schlug dir ja schon Alternativen vor :)

_________________
Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
Robii Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236



BeitragVerfasst: Mi 26.05.10 16:07 
Das heißt ich müsste vom Prinzip her meinen Clienten einmal schreiben und erstellen und dann mit dem Hauptprogramm diesen nur in den Ausgabe-Ordner kopieren und die Parameter mit der Unit von jaenicke anhängen?

Lieben Gruß,
robii.

E: Wo finde ich die Unit denn? :)
StrikeLucky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 35



BeitragVerfasst: Mi 26.05.10 16:55 
Wenn ich einmal fragen darf, wozu brauchst du dann "Client.exe"?
Wenn dein Freund die IP & Port hat und trägt sie in das Hauptprogramm ein, wieso verbindet sich dann das Hauptprogramm nicht direkt?
Du machst dann ja einen Umweg, erst Hauptprogramm starten, IP & Port eintragen, Client erstellen, Client starten, chatten ist doch alles unnötig oder? Einfach aus dem Hauptprogramm verbinden...
Robii Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236



BeitragVerfasst: Mi 26.05.10 17:35 
Ich versuche das jetzt mal mit der Unit von Jaenicke. Ich habe mir die Demo + Unit runtergeladen und folgendes geschrieben. Meinem Verständnis nach müsste der Quellcode bewirken, das an die *.exe PreClient.exe die Variablen aIp,aPort & aAs angehängt werden oder?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TfNew.ClientModifizieren;
var
  FileContents: TSJExeDataStream;
  Datei: String;
begin
  Datei := (ExtractFilePath(Application.ExeName)+'Files\PreClient.exe');
  FileContents := TSJExeDataStream.Create(Datei);
  try
    FileContents.WriteString(aIp+'#'+aPort+'#'+aAs+'#');
    ShowMessage('Erfolgreich generiert!');
  finally
    FileContents.Free;
  end;
end;


Allerdings wird die Meldung 'Erfolgreich generiert!' niemals angezeigt. Das Programm hängt sich aber auch nicht auf..?!

Lieben Gruß,
robii.

Edit: Funktioniert doch! Falsch aufgerufen! :p
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 26.05.10 20:44 
Ich würde das nicht mit Trennzeichen trennen sondern als drei Strings mit dreimal WriteString schreiben, dann kannst du das mit ReadString nämlich auch automatisch wieder einzeln auslesen. ;-)