| Autor |
Beitrag |
henny
      
Beiträge: 126
|
Verfasst: Di 02.06.09 11:21
Hallo zusammen,
wenn ich ein selbst programmiertes programm z.b. auf den namen hallo.exe speicher
und es dann starten möchte dann kommt diese fehlermeldung:
Die ntvdm-cpu hat einen ungültigen befehl entdeckt.
Was muss ich tun das diese fehlermeldung nicht mehr kommt?
danke schonmal im voraus!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 02.06.09 11:30
Zeig mal den Quellcode. Und was meinst du mit "programm z.b. auf den namen hallo.exe speicher"? Du musst den Quellcode auch kompilieren.
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 02.06.09 11:32
Ein paar weitere Infos wären wirklich nicht schlecht.
Evtl. hilft dir dieser Artikel weiter?
_________________ We are, we were and will not be.
|
|
henny 
      
Beiträge: 126
|
Verfasst: Di 02.06.09 11:51
Und was muss ich in den Quellcode reinschreiben?
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 02.06.09 11:53
_________________ We are, we were and will not be.
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: Di 02.06.09 11:55
henny hat folgendes geschrieben : | | Und was muss ich in den Quellcode reinschreiben? |
Woher sollen wir das denn wissen?
Du zeigst nicht, wie Dein bisheriger Quellcode aussieht und verschweigst uns, was Du bisher gemacht hast.
Darüber hinaus sollen wir dann wahrscheinlich auch noch erraten, mit welcher Delphi-Version auf welchem Betriebssystem Du arbeitest?
|
|
henny 
      
Beiträge: 126
|
Verfasst: Di 02.06.09 12:03
Also mein quellcode sieht so aus:
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: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105:
| procedure TForm1.Button1Click(Sender: TObject); var a,b: Double; begin a := StrToFloat(Edit1.Text); b := StrToFloat(Edit2.Text); label2.caption := FloatToStr(a+b); end;
procedure TForm1.Button2Click(Sender: TObject); var a,b: Double; begin a := StrToFloat(Edit1.Text); b := StrToFloat(Edit2.Text); label2.caption := FloatToStr(a-b); end;
procedure TForm1.Button3Click(Sender: TObject); var a,b: Double; begin a := StrToFloat(Edit1.Text); b := StrToFloat(Edit2.Text); label2.caption := FloatToStr(a/b); end;
procedure TForm1.Button4Click(Sender: TObject); var a,b: Double; begin a := StrToFloat(Edit1.Text); b := StrToFloat(Edit2.Text); label2.caption := FloatToStr(a*b); end;
procedure TForm1.FormCreate(Sender: TObject); begin randomize; zufall := random(1000)+1; randomize; diagnose := tstringlist.create;
randomize; randomize; Zahl1 := random(10000); Zahl2 := random(10000);
end;
procedure TForm1.Button5Click(Sender: TObject); begin
try edit3.SetFocus;
Eingabe := strtoint (edit3.Text); if Eingabe = zufall then label4.Caption := 'Grins, das war richtig!'; if Eingabe < zufall then label4.Caption := 'Deine Zahl ist zu klein!'; if Eingabe > zufall then label4.Caption := 'Deine Zahl ist zu groß!'; except label4.Caption := 'Vollidiot du sollst eine Zahl eingeben!'; end;
end;
procedure TForm1.Button6Click(Sender: TObject); begin edit3.SetFocus; label4.caption := 'Ich denke mir eine neue Zahl zwischen 1 und 1000!'; label5.Caption := 'Rate mal!';
zufall := random(1000) + 1;
end;
procedure TForm1.Button7Click(Sender: TObject); begin Button7.Left := random (ClientWidth-Button1.Width); Button7.Top := random (ClientHeight-Button1.Height); end;
procedure TForm1.Button8Click(Sender: TObject); begin randomize; zahl1:=random(10000); zahl2:=random(10000);
end;
end. |
Moderiert von Gausi: Delphi-Tags hinzugefügt
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: Di 02.06.09 12:06
Ad eins gibt es hier Delphi-Code-Tags, die doch bitte benutzen magst und ad zwei lässt sich dieser Quellcode ja noch nichtmal kompilieren. Er kann also nicht vollständig sein.
Meine anderen Hinweise hast Du ja intelligenterweise ignoriert.
|
|
henny 
      
Beiträge: 126
|
Verfasst: Di 02.06.09 12:13
ups den anfang des quellcodes habe ich vergessen:
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:
| unit Vollprogramm;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Edit3: TEdit;
Label6: TLabel; Button6: TButton; Button7: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); private public end;
var Form1: TForm1; ergebnis : integer; eingabe, zufall: integer; diagnose : tstringlist; nr:integer; Zahl1,zahl2: integer;
implementation
{$R *.dfm} |
Moderiert von Gausi: Delphi-Tags hinzugefügt
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: Di 02.06.09 12:18
Liest Du eigentlich, was ich schreibe?
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 02.06.09 12:30
Der Code sieht eigentlich ok aus. Das einzige, was mir auf Anhieb auffällt, ist die mehrfache Verwendung von randomize - das sollte man nur einmal am Anfang aufrufen, danach nicht mehr.
Es bleibt die Frage nach dem Betriebssystem und der verwendeten Delphi-Version.
_________________ We are, we were and will not be.
|
|
henny 
      
Beiträge: 126
|
Verfasst: Di 02.06.09 12:40
Also mein betriebsystem ist windows xp und ich verwende delphi7.
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Di 02.06.09 13:03
Was passiert, wenn du das Programm aus Delphi heraus startest?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Di 02.06.09 13:11
henny hat folgendes geschrieben : | Hallo zusammen,
wenn ich ein selbst programmiertes programm z.b. auf den namen hallo.exe speicher
und es dann starten möchte dann kommt diese fehlermeldung:
Die ntvdm-cpu hat einen ungültigen befehl entdeckt.
Was muss ich tun das diese fehlermeldung nicht mehr kommt?
danke schonmal im voraus! |
Du speicherst aber nicht etwa den Quelltext direkt in eine exe-Datei?? Wenn doch, dann würde ich dir erstmal nahelegen, die absoluten IT-Grundlagen zu lernen, bevor du programmieren willst...
Ein Programm wird als Quelltext geschrieben und muss dann von einem Compiler in Maschinensprache übersetzt werden. Erst dann kann man es ausführen.
Verzeiht mir, dass ich hier nicht noch auf Linker, Assembler und alternativ Interpreter eingehe...
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Di 02.06.09 13:14
Warum hängst du nicht einfach mal den gesamten Projektordner an? Das wäre doch das aller einfachste. Dann können wir mal schauen, was falsch ist.
|
|
Sinspin
      
Beiträge: 1337
Erhaltene Danke: 119
Win 10
RIO, CE, Lazarus
|
Verfasst: Di 02.06.09 14:49
Also, NTVDM deutet für mich auf eine DOS Anwendung hin. Wenn in deiner Pojektdatei (die .DPR) irgendsowas wie {$APPTYPE CONSOLE} steht dann sollte mich die Meldung nicht wundern.
Nebenbei, du erzeugst ein schönes Speicherloch wenn du eine TStringList anlegst, diese aber nicht wieder freigibst. Da du sie im OnCreate (FormCreate) anlegst sollte sie im OnDestroy wieder freigegeben werden.
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Di 02.06.09 15:11
NTVDM ist alles, was .exe heißt, aber keinen 32-Bit-PE-Header hat.
Wie gesagt: du wirst wohl die .dpr einfach in .exe umbenannt haben, das geht logischerweise nicht. Du musst die Echse schon durch Compilieren erstellen
EDIT @ Robert.Wachtel unter mir:
Jap, natürlich. Ist nur ein Vermutung, wenn auch eine relativ wahrscheinliche.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Zuletzt bearbeitet von Martok am Di 02.06.09 15:28, insgesamt 1-mal bearbeitet
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: Di 02.06.09 15:22
Martok hat folgendes geschrieben : | | [...] Wie gesagt: du wirst wohl die .dpr einfach in .exe umbenannt haben, [...] |
Auch wenn alles den Anschein hat und ich das ebenso vermute, so ist es dennoch eine reine Mutmaßung und wir sollten vielleicht einfach die Stellungnahme des OPs dazu abwarten...
|
|
Sinspin
      
Beiträge: 1337
Erhaltene Danke: 119
Win 10
RIO, CE, Lazarus
|
Verfasst: Di 02.06.09 15:29
Leute! Liegt das am Wetter?
Auch wenn es sich wohl um einen Anfänger handelt muss man doch nicht immer gleich davon ausgehen das man es mit einem Idioten zu tun hat! Und vorallem, nicht alle auf einmal!
Es ist ja nichtmal die erste Frage die sie/er? hier gestellt hat. Also wird sicher klar sein wie man vom Quelltext zum ausführbaren Programm kommt.
Ich spiele nicht gerne den Moralapostel, aber bitte zügelt eucht etwas und seid freundlich. Nebenbei, ihr habt auch mal angefangen!
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|