| Autor |
Beitrag |
hedie
      
Beiträge: 249
WIN XP WIN 2000 WIN Longhorn
D7 Pers D2005 Architect Vollversion
|
Verfasst: Di 10.05.05 12:27
Hallo
Ich möchte aus meinem programm eine einfache exe erzeugen (beim button click)
zu beginn erstmal etwas leichtes wie showmessage wie kann ich das machen?
HOFFE IR WISST WAS ICH MEINE
mfg
Hedie
_________________ Grüsse hedie
hört auf traurig zusein hört lieber radio Basilisk
|
|
Asgar
      
Beiträge: 160
XP Home Edition
D5
|
Verfasst: Di 10.05.05 12:30
willst du dein Programm als exe speichern? wenn ja dann klick auf Projekte, da is ein button da steht
(dein programmname)erzeugen also z.B: (Taschenrechner erzeugen).
|
|
hedie 
      
Beiträge: 249
WIN XP WIN 2000 WIN Longhorn
D7 Pers D2005 Architect Vollversion
|
Verfasst: Di 10.05.05 12:32
? was ich versteh nur bahnhof
ich möchte ein programm schreibenn dass mir beim kilck auf einen button ein neues programm erstellt das beim öffnen mit showmessage eine nachricht erzeugt
_________________ Grüsse hedie
hört auf traurig zusein hört lieber radio Basilisk
|
|
Benutzername
      
Beiträge: 210
Win XP Pro
Delphi 7 PE, D2005 Prof. SSL
|
Verfasst: Di 10.05.05 12:37
In C# ist das machbar, aber in Delphi wirst du damit vermutlich ein Problem bekommen, da du entweder einen eigenen Compiler schreiben müsstest, oder irgendeinen freien Compiler (z.B. Freepascal) mit ausliefern müsstest
Und nein, Compiler schreiben ist sehr schwer, du wirst es nich mal so eben nebenbei machen können (da ich dir einfach mal unterstelle, nicht die nötigen Grundlagen zu haben  ).
Für dich wäre denke ich der Freepascal-Compiler das einfachste 
|
|
hedie 
      
Beiträge: 249
WIN XP WIN 2000 WIN Longhorn
D7 Pers D2005 Architect Vollversion
|
Verfasst: Di 10.05.05 12:43
also C# Ist ja in D 2005 Architect enthalten und das habe ich also könntest du mir helfen in C# Sowas zu screiben? bitte bitte
p.s. wenn du mit der "grundlagen" meine kenntnisse meinst, dann hast du recht 
_________________ Grüsse hedie
hört auf traurig zusein hört lieber radio Basilisk
|
|
3rdnuss
      
Beiträge: 139
|
Verfasst: Di 10.05.05 13:30
Du könntest per Button-klick auch Assembler Befehle in eine *.asm Datei schreiben.
Dann packst du noch einen einigermaßen guten (kostenlosen) assembler in dein Programmordner,
und lässt dir dann die *.asm Dateien zu EXE Dateien comilieren/linken
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 10.05.05 13:47
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Di 10.05.05 13:54
am besten du schreibst einen interpreter, und hängst dann ein script, das er interpretieren soll an diese EXE dran !
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
3rdnuss
      
Beiträge: 139
|
Verfasst: Di 10.05.05 14:11
Aber wenns dir nur Darum geht, eine Messagebox zu erstellen, dann würde ich das Mit
Delphi + Assembler machen = schön klein.
|
|
hedie 
      
Beiträge: 249
WIN XP WIN 2000 WIN Longhorn
D7 Pers D2005 Architect Vollversion
|
Verfasst: Di 10.05.05 14:12
Luckie hat folgendes geschrieben: | hedie hat folgendes geschrieben: | p.s. wenn du mit der "grundlagen" meine kenntnisse meinst, dann hast du recht  |
Damit erübrigt sich hier eigentlich jegliche Diskussion.  |
Ich meine damit das wissen um einen kompletten compiler zu schreiben (habe schoneinmal einen batch compiler geschrieben)
und bitte postet ein beispiel dass ganz simpel ist (exe die eine nachricht mit showmessage ausgibt z.b.)
grüsse
Hedie
_________________ Grüsse hedie
hört auf traurig zusein hört lieber radio Basilisk
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 10.05.05 14:51
hedie hat folgendes geschrieben: | | Ich meine damit das wissen um einen kompletten compiler zu schreiben (habe schoneinmal einen batch compiler geschrieben) |
Wie ist der denn aufgebaut? Und wenn es tatsächlich ein Compiler ist und nicht bloß ein Programm, das Batchdateien abarbeitet (Interpreter), dann müsstest du doch an sich das Wissen besitzen, um einen Compiler für eine Pascal/Delphi-ähnliche Sprache zu schreiben.
| Zitat: | | und bitte postet ein beispiel dass ganz simpel ist (exe die eine nachricht mit showmessage ausgibt z.b.) |
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| program Test; uses Windows; begin MessageBox(0,'Hallo, Welt!',nil,0); end. |
kompilieren, Exe ist fertig.  Aber das war sicher nicht das, was du wolltest.
|
|
I.MacLeod
      
Beiträge: 109
|
Verfasst: Di 10.05.05 15:35
Hier ein Compiler für die Sprache "MessageBox". Beispiel:
Quelltext 1: 2:
| Dieser Text wird ausgegeben. Alles nach der ersten Zeile ist in dieser Implementierung Kommentar. |
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73:
| procedure CreateMSGBExe(filename, message: string); const zero: dword = 0; ExeData: string = 'MZl'#0#1#1#0#3#4#0#1#17#0#1'ÿÿ'#3#0#2#1#0#6'@'#0#35'p'#0#3#14#31 + '°'#14#0#1'´'#9'Í!¸'#0#1'LÍ!$'#0#33'PE'#0#2'L'#1#3#0#1'O¢€B'#0#8'à' + #0#1#3#1#11#1#0#15#16#0#12'@'#0#2#16#0#3#2#0#2#1#0#7#4#0#8'@'#0#3 + #2#0#6#2#0#5#16#0#2#16#0#4#16#0#2#16#0#6#16#0#12' '#0#2'R'#0#115 + 'code'#0#5#16#0#3#16#0#2#17#0#4#2#0#14'@'#0#2'Àimports'#0#2#16#0#3 + ' '#0#2'R'#0#4#4#0#14'@'#0#2'Prelocs'#0#3#16#0#3#48#0#22'@'#0#2'R'#0 + #32#49#$DB'SSh` @'#0#1'Sÿ'#21'< @'#0#1#195#104#0#250#0#244'4 '#0#10 + '( '#0#2'< '#0#22'user32.dll'#0#2'D '#0#6'D '#0#8'MessageBoxA'#0#15; var f: file; var i, c: integer; cnt: dword; lz, p: pchar; begin AssignFile(f, filename); try Rewrite(f, 1); p := Pointer(exedata); lz := p; c := 0; i := 0; while i < Length(exedata) do begin if p^ = #0 then begin BlockWrite(f, lz^, c);
inc(p); cnt := dword(p^);
BlockWrite(f, zero, cnt and 3); cnt := cnt shr 2; while cnt > 0 do begin BlockWrite(f, zero, 4); dec(cnt); end;
inc(p); inc(i, 2); lz := p; c := 0; end else begin inc(p); inc(c); inc(i); end; end; BlockWrite(f, lz^, c); BlockWrite(f, Pointer(message)^, Length(message)+1); finally CloseFile(f); end; end;
procedure CompileFile(fn: string); var f: TextFile; line: string; begin AssignFile(f, fn); try Reset(f); if not eof(f) then begin ReadLn(f, line); CreateMSGBExe(fn + '.exe', line); end; finally CloseFile(f); end; end; |
Sinn und Lerneffekt bleiben offen.
//Update:
Version 1.5.10.16.34: kompiliert jetzt noch schneller
_________________ {$APPTYPE CONSOLE}uses SysUtils;const a='{$APPTYPE CONSOLE}uses SysUtils;const a=%s;begin write(Format(a,[#39+a+#39]))end.';begin write(Format(a,[#39+a+#39]))end.
|
|
MisterBum83
      
Beiträge: 245
Erhaltene Danke: 2
WIN XP
Delphi 6
|
Verfasst: Di 10.05.05 15:51
Bitte schliesst dieses Posting!
Hier weiss keiner was der andere will, besonders derjenige, der das Thema eröffnet hat...
|
|
I.MacLeod
      
Beiträge: 109
|
Verfasst: Di 10.05.05 15:56
hedie hat folgendes geschrieben: | Ich möchte aus meinem programm eine einfache exe erzeugen (beim button click)
zu beginn erstmal etwas leichtes wie showmessage wie kann ich das machen? |
Ist doch offensichtlich: Er will eine neue EXE erstellen, die beim Start eine Nachricht ausgibt. Das geht mit meinem Code, der sollte ihm aber auch klar machen dass er besser die Finger davon lässt, sowas direkt zu machen, wenn er nicht sehr viel Zeit in das Ganze investieren will. Wenn es schon unbedingt sein muss dann per mitgeliefertem Assembler/Compiler, aber das wurde ja auch schon gesagt.
_________________ {$APPTYPE CONSOLE}uses SysUtils;const a='{$APPTYPE CONSOLE}uses SysUtils;const a=%s;begin write(Format(a,[#39+a+#39]))end.';begin write(Format(a,[#39+a+#39]))end.
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Di 10.05.05 16:23
guter code, MacLeod...
vielleicht reicht es aber bereits für hedies zwecke, wenn er das programm welches er per button erstellen will, erst mit delphi erzeugt und dann als resource in sein wirts-programm einbindet und bei bedarf extrahiert.
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Di 10.05.05 18:02
sowas meinte ich.
und wenn das eingebunde programm dann eine einstellbare message anzeigen soll, muss er nach dem extrahieren halt noch die message hinen an das extrahierte prog dranhängen.
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 11.05.05 14:38
Wie wärs denn mit TPasScript? Das kostet zwar was, aber damit wärs wirklich am einfachsten, denn da kann man einen Exe-Rumpf erstellen, der diese Komponente enthält und dann den Delphi-Quelltext für den Skript, der ausgeführt werden soll, an die Exe anhängen.
Wie das an die Exe anhängen und wieder laden geht, wurde hier im Forum bereits diskutiert, wenn ich mich recht entsinne und TPasScript ist supereinfach zu handhaben. (Ist über Google leicht zu finden...)
|
|
GSE
      
Beiträge: 740
Win 2k, Win XP Pro
D5 Prof, D6 Ent, D2k5 PE
|
Verfasst: Mi 11.05.05 14:52
gute idee, aber da gibt's auch eine kostenlose und sehr gute (wie ich finde) Alternative.
Die Innerfuse Pascal Komponenten hier
mfg
GSE
_________________ Programming today is a race between software engineers striving to build bigger and better idiot-proof programs
and the universe trying to produce bigger and better idiots. So far, the universe is winning. (Richard Cook)
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 11.05.05 15:27
Stimmt, die Komponente kann wohl sogar mehr, jedenfalls sollte damit das möglich sein, was ich vorgeschlagen habe. Und das ist sicher SEHR viel einfacher als hier mit Assembler anzufangen, vor allem, wenn man Assembler nicht kennt.
Abgesehen davon: Damit kann man ja auch visuell arbeiten und nicht nur eine MessageBox oder ähnliches anzeigen...
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Sa 21.05.05 15:44
@I.MacLeod: würde mich interessieren wie du es hingekriegt hast die reloc section so zu patchen, dass sie von beliebiger länge sein kann (die länge laut sectiontable ist ja 0). interessant ist auch, das sie quasi mit import überlappt.
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|