AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exe verändern, mal wieder

Ein Thema von fortuneNext · begonnen am 24. Mär 2008 · letzter Beitrag vom 25. Mär 2008
Antwort Antwort
Seite 1 von 2  1 2      
fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#1

Exe verändern, mal wieder

  Alt 24. Mär 2008, 15:24
Hi,
ich möchte auch mal eine exe (die von mir selbst stammt) verändern. Habe die SuFu benutzt, aber nichts eindeutiges gefunden. Das Problem ist also folgendes:
Ein Hauptprogramm kann viele kleine unterexes erstellen. Dies tue ich über die altbekannte FileSteam-Methode - die Datei ist in einer anderen Datei drin und wird dann immer, wenn ein Icon erstellt werden soll, rauskompiliert. Jetzt ist aber das Problem, dass diese Exedateien sich immer Minimal unterscheiden sollen - und zwar in einer einzigen globalen Konstante, die dazu dient, die kleine Exe mit einer Nummer zu identifizieren. In dieser Konstante soll dann also einfach 1,2,3,4,5 etc stehen, nach der Wahl des Users in einem Editfeld. Da diese kleinen Exedateien jetzt aber unbegrenzt oft erzeugt werden können sollen, ist es eine extrem schlechte Lösung, da in die Datei 10000 kleine Dateien reinzupacken, die jeweils sich nur um diese eine Konstante unterscheiden. Also Frage ich mich: Wie kann ich sie immer entsprechend verändern - geht das vielleicht direkt beim herauskompilieren? Habe bisher folgenden Schnipsel gefunden, der aber leider nicht funktioniert, es kommt zwar FERTIG aber die datei pomg.exe zeigt in der Message (die der Kosntante entspricht) weiterhin OMG an:

Delphi-Quellcode:
type
  TText= record
  Text1, Text2: string[200];//Beispiel
  end;

procedure TForm1.Button1Click(Sender: TObject);
var
  FileStream: TFileStream;
  Text: TText;
  Pfad: AnsiString;
begin
Pfad:= 'C:\pomg.exe';
ZeroMemory(@Text, SizeOf(Text));
if FileExists(Pfad) then
begin
  FileStream:= TFileStream.Create(Pfad, fmOpenReadWrite);
  try
    FileStream.Position:= 23;//Beispiel Leseposition
    FileStream.Read(Text, SizeOf(Text));
    Text.Text1 := ' Message:String=''OMFG'''; //weiterverarbeiten
    FileStream.Position:= 23;//Leseposition
    if FileStream.Write(Text, SizeOf(Text))= SizeOf(Text) then
      Showmessage('fertig');
  finally
    FileStream.Free;
  end;
end;
end;
Das stammt aus einem Beispielprogrammlein, das ich gemacht hab. Zum Text will ich im Programm omg.exe einfahc die Konstante Message, die bisher OMG enthält, einfach in OMFG ändern. Sie befindet sich im Delphiprojekt in Zeile 23.
  Message:String='OMG'; steht in der Zeile.
Wie krieg ich das vernünftig hin, oder fällt jemanden vielleicht noch eine bessere Methode ein?

mfg
fortuneNext

PS: Nebenfrage: Kann ich die Splitmethode eigentlich so modifizieren, dass die herausgeholte Datei trotzdem noch drin bleibt? Also nicht mehr | Datei3 =SPLIT= Datei1 + Datei2 | sondern | Datei3 =SPLIT= Datei3 + Datei2 | ?
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Exe verändern, mal wieder

  Alt 24. Mär 2008, 16:02
Du solltest eventuell mit Parametern arbeiten, die du EINER Echse beim Start übergibst.
  Mit Zitat antworten Zitat
fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Exe verändern, mal wieder

  Alt 24. Mär 2008, 16:17
Verzeihung, wie meinen?
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Exe verändern, mal wieder

  Alt 24. Mär 2008, 16:25
Es macht allgmein keinen Sinn, für jede Version einer Anwendung, die sich bei dir letzten endes nur durch einen Integerwert unterscheidet, eine eigene Exe zu kompilieren.

Du hast prinzipiell 2 Möglichkeiten, deine Anwendung zu parametrisieren:
  • Du übergibst deiner Anwendung beim Start einen Parameter, und wertest diesen z.B. im OnCreate Ereignis deines Hauptformulars aus... Stichwortsuche: Hier im Forum suchenParamStr und Hier im Forum suchenParamCount
  • Du legst deiner Anwendung eine Konfigdatei bei. Format, ist prinzipiell egal. Bei einfachen Dingen würde ich eine Hier im Forum suchenINI Datei nehmen.

Du brauchst somit nur eine kompilierte Version deiner Anwendung. Alles Konfigurierbare wird über einen der beiden genannten Wege geregelt.
  Mit Zitat antworten Zitat
fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Exe verändern, mal wieder

  Alt 24. Mär 2008, 17:04
Achso meinst du. Naja es ist so, die Anwendungen unterscheiden sich auch noch in ihrer Funktion; ich speichere nämlich bereits die Konfiguration in einer .ini . Im Prinzip verweisen die kleinen Dateien auf einen Ordner. In meiner Inidatei steht jetzt:

OrdnerExe1 = C:/Bla
OrdnerExe2 = C:/Blabla
OrdnerExe3 = C:/Blablabla
OrdnerExe4 = C:/Test

etc.
Die Konstante soll jetzt der kleinen exe überhaupt sagen, welche ID es denn hat, d.h. ob es auf den 1,2,3,4... Wert zugreifen soll. Und ohne diese Konstante wissen die Echsen eben nicht, welchen Wert sie überhaupt benutzen sollen, wenn ich das in eine Ini schreibe, oder?
Und jedenfalls, genau das ist es eben, ich brauche ganz viele Kompilierungen der kleinen exe, sonst funktioniert das Programm nicht, da es eben denn Sinn hat, mehrere zu machen!
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

Re: Exe verändern, mal wieder

  Alt 24. Mär 2008, 17:10
Hier im Forum suchenResourcen?
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Exe verändern, mal wieder

  Alt 24. Mär 2008, 17:19
Was spricht dagegen, in der INI Datei mit anzugeben, welcher Ordner benutzt werden soll.. Oder eben per Parameter zu übergeben. Ich denke, dein Konzept ist nicht gerade optimal gewählt.
  Mit Zitat antworten Zitat
fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Exe verändern, mal wieder

  Alt 24. Mär 2008, 17:24
Mit Version meinte ich eigentlich jetzt nicht so unbedingt die Ausgabe, sondern eben auf welche es zugreifen soll. Obs jetzt Nr.1,2,3,4 etc ist. Das in die Versionsinfo zu schreiben scheint mir dann schon ein bischen billig, außerdem ist die schon belegt.
Oder was meinst du, vllt meinst du was adneres mit Ressourcen als ich? Kenne mich da nicht so aus

@ jelly:
Ja, dann zeig mal wie.
Ich hab also 2 exe-Dateien. Die eine soll mich z.B. nach C:/Programme, die andere nach C:/Dokumente und Einstellungen führen. Wie will man das mit einer Ini machen?
Ich schreib jetzt also rein
Pfad1 = C:/Programme
Pfad2 = C:/Dokumente und Einstellungen

Woher weiss jetzt die eine exe dass sie Pfad1 und die andere exe Pfad2 nehmen soll?
Also ich meine, wie solld er Code da aussehen?
Showmessage(Ini.ReadInteger('Main','Pfad//?//',0); Konzept nicht optimal gewählt... naja, wie soll ichs halt anders machen. Man hat eben 200-500 kleine exe Dateien, jede verlinkt zu einem anderen Ordner. Mag komisch erscheinen, aber muss so sein für das weitere Projekt.
Und wie übergebe ich eigentlich Parameter?
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Exe verändern, mal wieder

  Alt 24. Mär 2008, 17:43
Zitat von fortuneNext:
Ja, dann zeig mal wie.
Ich hab also 2 exe-Dateien. Die eine soll mich z.B. nach C:/Programme, die andere nach C:/Dokumente und Einstellungen führen. Wie will man das mit einer Ini machen?
Ich schreib jetzt also rein
Pfad1 = C:/Programme
Pfad2 = C:/Dokumente und Einstellungen
Dann starte dein Programm mit
Code:
DeinProgramm.exe 1
Und prüfe z.B. im Oncreate Ereignis deines Hauptformulars:
Delphi-Quellcode:
procedure TfrmMain.FormCreate(Sender: TObject);
var
 ini : TIniFile ;
 pfad : string ;
begin
     if (ParamCount >= 1) then begin
         ini := TIniFile.create('settings.ini') ;
         pfad := ini.ReadString('PATHS', 'Pfad' + ParamStr(1),'') ;
         ShowMessage(pfad);
     end;
end;
An deinem Konzept ist definitiv was falsch, wenn du 200 oder 500 Echsen erstellen musst... Erzähl mal, was du überhaupt vorhast, und vor allem, warum du so überzeugt bist, dass du um diese 200 Echsen nicht drumrumkommst.
  Mit Zitat antworten Zitat
fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Exe verändern, mal wieder

  Alt 24. Mär 2008, 18:05
Hm, und wie bewirke ich, dass die Zahl bei jeder der .exen sich erhöht?

Also das Programm soll vorläufig nur für meinen Nutzen da sein. Und zwar möchte ich gerne einen riesigen Haufen von Ordnern Passwortbelegen. Das muss nicht gerade sicher sein, halt nur dass man nicht direkt dran kommt. Also habe ich mir gedacht: Tausche ich einfach meine ganzen Ordnerknöpfe mit einzelnen .exe Dateien aus, die mich nach der Passwortabfrage dann dahinlinken. Die Ordner selber vergrabe ich dann irgendwo tief im System, wo man sie so gut wie nicht finden kann. Das ganze noch als Systemdatei tarnen und verstecken, alles ausblenden und der Ordner ist ohne zuhilfename besonderer Software nicht mehr zu finden. Und damit ich jetzt schnell dran komme, eben .exe Dateien auf meinen Desktop, die genau wie die normalen Verknüpfungen sind, nur dass eben vorher das Passwort abgefragt wird.
Habe mich da lange umgeguckt, ob es sowas nicht schon gibt, aber ich habe nach langem Suchen nichts gefunden, was meinen Ansprüchen entspricht. FolderAcess z.B. macht die Symbole zu einem Systensteuerungslink, man kann sie entsichern indem man das Hauptprogramm startet und da das Passwort eingibt. Aber nirgendwo findet sich ein "Klick -> Passwort -> Da" - Programm. Wie gesagt, muss nicht sicher sein, nur dass mans nicht, wenn mans auf meinem Desktop sieht, einfach öffnen kann. Und da das wirklich viele Ordner sind, eben 200 Dateien, nichtwahr ;D

Frage: Warum ich nicht einfach ein Programm mache, das mich erst nach dem PW fragt und dann nach dem Ordner, den ich haben möchte?
Ganz einfach: Gefällt mir nicht so wie dass ich einfach normale Symbole auf dem Desktop habe
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:22 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