Autor Beitrag
hedie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 249

WIN XP WIN 2000 WIN Longhorn
D7 Pers D2005 Architect Vollversion
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 160

XP Home Edition
D5
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 249

WIN XP WIN 2000 WIN Longhorn
D7 Pers D2005 Architect Vollversion
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 210

Win XP Pro
Delphi 7 PE, D2005 Prof. SSL
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 249

WIN XP WIN 2000 WIN Longhorn
D7 Pers D2005 Architect Vollversion
BeitragVerfasst: 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 :wink:

_________________
Grüsse hedie
hört auf traurig zusein hört lieber radio Basilisk
3rdnuss
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 139



BeitragVerfasst: 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



BeitragVerfasst: Di 10.05.05 13:47 
user profile iconhedie hat folgendes geschrieben:
p.s. wenn du mit der "grundlagen" meine kenntnisse meinst, dann hast du recht :wink:

Damit erübrigt sich hier eigentlich jegliche Diskussion. :roll:
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 139



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 249

WIN XP WIN 2000 WIN Longhorn
D7 Pers D2005 Architect Vollversion
BeitragVerfasst: Di 10.05.05 14:12 
user profile iconLuckie hat folgendes geschrieben:
user profile iconhedie hat folgendes geschrieben:
p.s. wenn du mit der "grundlagen" meine kenntnisse meinst, dann hast du recht :wink:

Damit erübrigt sich hier eigentlich jegliche Diskussion. :roll:


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



BeitragVerfasst: Di 10.05.05 14:51 
user profile iconhedie 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.)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
program Test;
uses
  Windows;
begin
  MessageBox(0,'Hallo, Welt!',nil,0);
end.

kompilieren, Exe ist fertig. :roll: Aber das war sicher nicht das, was du wolltest.
I.MacLeod
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 109



BeitragVerfasst: Di 10.05.05 15:35 
Hier ein Compiler für die Sprache "MessageBox". Beispiel:

ausblenden Quelltext
1:
2:
Dieser Text wird ausgegeben.
Alles nach der ersten Zeile ist in dieser Implementierung Kommentar.


ausblenden volle Höhe Delphi-Quelltext
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:
// (C) meins
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 245
Erhaltene Danke: 2

WIN XP
Delphi 6
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 109



BeitragVerfasst: Di 10.05.05 15:56 
user profile iconhedie 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 740

Win 2k, Win XP Pro
D5 Prof, D6 Ent, D2k5 PE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: 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...