Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Compiliertes Programm ändern & speichern (https://www.delphipraxis.net/99856-compiliertes-programm-aendern-speichern.html)

Puddy 18. Sep 2007 18:33


Compiliertes Programm ändern & speichern
 
Ich habe ein Downloadprogramm für einen Freund geschrieben, das ein Spiel herunterläd. Jetzt hat er mich gefragt, ob ich das Programm
auch für andere Spiele anpassen würde. Er hat mir dann gesagt, dass er um die hundert Spiele hat, für die er (für jedes extra) einen
Downloader möchte. Geändert muss in dem Downloader folgendes werden: ein Informationsbild, zwei Label (Link & Dateiname).

Währe es da möglich, ein Programm zu schreiben, dass diese 3 Objekte ändert und die Exe dann wieder speichert? Oder gibt es eine
andere Möglichkeit?

Nikolas 18. Sep 2007 18:34

Re: Compiliertes Programm ändern & speichern
 
Warum nimmst du nicht eine Textdatei, aus der das Programm die Infos liest?

quendolineDD 18. Sep 2007 18:39

Re: Compiliertes Programm ändern & speichern
 
Da er die Veränderung einer *.exe haben möchte, würde ich meinen, er ist nicht mehr im Besitz der Projekt-Dateien?!
In dem Fall würde mir nur disassembling einfallen.
Andernfalls kannst du doch das ganze Variabel gestalten.
Zumal, warum müssen denn Labels geändert werden, um den Downloadpfad o.ä. zu ändern?

Puddy 18. Sep 2007 18:49

Re: Compiliertes Programm ändern & speichern
 
Die Source hab ich natürlich noch. Es geht darum, dass mein Freund sich den Downloader selber abändern und verwenden kann. (er hat
aber kein Delphi) Die Label sind nur zur Information des Benutzers da. Die URL hab ich in einer Variable angegeben.

dominikkv 18. Sep 2007 18:53

Re: Compiliertes Programm ändern & speichern
 
na dann erstelle doch eine textdatei mit dem pfad zum bild und dem dateinamen und was du noch so alles da drinn haben willst und schau beim programmstart was da drinn steht und das zeigst du dann an.
dann braucht dein freund einfach nur die textdatei verändern.

SirThornberry 18. Sep 2007 18:54

Re: Compiliertes Programm ändern & speichern
 
spricht irgend etwas gegen die Variante die Dinge in eine Textdatei oder eine externe Datei auszulagern? Denn das wäre die einfachste Variante. Natürlich kannst du dein Programm auch so schreiben das du bestimmte Stellen später einfach patchen kannst.

Puddy 19. Sep 2007 15:08

Re: Compiliertes Programm ändern & speichern
 
Die Methode mit der .txt ist an und für sich nicht schlecht, aber er möchte den Downloader ja weitergeben, und ich will nicht, dass
jeder einfach nur die .txt ändern kann um dann das Programm als seines zu verkaufen.

Ich spiele mittlerweile mit der Idee, dass ich die Namen der Dateien gleich bestimme. (Also das jedes Informationsbild z.B. info.jpg
heisst) Dann müsste ich für jedes Programm "nur" die Dateien überschreiben und dann compilieren. Aber bei um die 100 Stück ist das
auch ziemlich Arbeitsaufwendig.

[edit] Da fällt mir ein, dass ich ja aus den sich ändernden Teilen eine Ressource erstellen könnte, dann wäre das ganze noch
einfacher. Aber im Endeffekt wäre es trotzdem viel Arbeit. Kann man das aufrufen und Kompilieren nicht irgendwie automatisieren?

RavenIV 19. Sep 2007 15:31

Re: Compiliertes Programm ändern & speichern
 
Mach Dir doch eine Definitions-Unit, in der Du die "veränderbaren" Texte und Bilder als Konstanten ablegst.

Weiterhin erstellst Du eine Batch-Datei, die:
- die Konstanten in der Definitions-Unit anpasst
- den dcc (Delphi-Comandline-Compiler) mit passenden Parametern aufruft

Und für jedes Projekt machst Du dann eine eigene Batch und fertig.

Puddy 19. Sep 2007 16:18

Re: Compiliertes Programm ändern & speichern
 
Gute Idee. Ich werds ausprobieren.

Danke schon mal für die Antworten ;)

SirThornberry 19. Sep 2007 16:34

Re: Compiliertes Programm ändern & speichern
 
wenn du es doch mit patchen machen willst dann musst du in der Exe eben Speicher dafür vorsehen. Zum Beispiel durch eine Globale Variable etc.
Delphi-Quellcode:
var
  Marker01: Integer=$ABABAB;
  Marker02: Integer=$CCAABB;
  Platz_Fuer_Bild: array[0..64000-1] of char;
wenn du das compilierst (und dafür sorgst das die variablen nicht weg optimiert werden) dann stehen die auch so in deiner Exe drin. Das heißt du durchsuchst später die fertige Exe nach $ABABAB$CCAABB und die 64000 Byte dahinter sind der Platz wo du dein Bild rein speichern kannst (also die Daten überschreiben kannst)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 Uhr.
Seite 1 von 2  1 2      

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