Compiler problem

Hi

Ich habe vor ein paar Wochen mit hilfe eines Buches angefangen zu programmieren. Hab mir dann auch gleich Delphi 7 beschaft.
Mein Problem ist aber, dass ich fast keins meiner Programme compilieren oder gar ausführen kann.
Jetzt weiss ich nicht mehr weiter und brauch eine Lösung
sonst werde ich noch verrückt:smile:
Also kann mir jemand helfen???

mfg Ferdinand

Hallo Ferdinand,

natürlich helfen wir alle gern. Du musst uns nur schildern, wo deine Probleme sind.
„… dass ich fast keins meiner Programme compilieren oder gar ausführen kann“ besagt ja, dass du schon mindestens ein Programm kompiliert hast. Also konkret: Was funtioniert nicht, wo klemmt es?

Gruß
Manfred

Hallo Manfred
naja mein Proble ist folgendes:
Ich will ein Programm „schreiben“ und baue alle z.b. Buttons usw. ein
ohne das ich geschrieben habe welche funktion diese haben sollen
und drücke F9. Dann erscheint mein Programm in einem Fenster(allerdings ohne dass irgend etwas fuktioniert).
Bis dahin ist noch alles OK aber dann beginne ich in den Quelltext
etwas zu schreiben, dann möchte ich prüfen(natürlich) ob alles recht ist wie ich es geschrieben habe und drücke wiederum F9 jetzt blinkt kurz ein Fenster auf welches aber sofor wieder verschwindet oder er zeigt fehler im Quelltext an, was ja auch richtig ist.
Aber nachdem (running) kurz aufblinkte kann ich irgent ein blödsinn in den Quelltext schreiben ohne das ein Fehler gemeldet wird.
Tja das war eine genauere Erläuterung meines Problemes!!!

mfg Ferdinand

Hallo Ferdinand,

natürlich helfen wir alle gern. Du musst uns nur schildern, wo
deine Probleme sind.
„… dass ich fast keins meiner Programme compilieren oder gar
ausführen kann“ besagt ja, dass du schon mindestens ein
Programm kompiliert hast. Also konkret: Was funtioniert nicht,
wo klemmt es?

Gruß
Manfred

Aber nachdem (running) kurz aufblinkte kann ich irgent ein
blödsinn in den Quelltext schreiben ohne das ein Fehler
gemeldet wird.

Hallo Ferdinand,
es könnte sein, daß die Applikation ohne offenes Fenster weiterläuft, und daß deine „blödsinnigen“ Änderungen gar nicht kompiliert werden. Versuche, einen Menüpunkt „Debug beenden“ (oder so ähnlich) zu finden, und beende den Debug-Modus. Ich hatte auch schon das Problem, daß die Applikation gelaufen ist, obwohl ich dachte, daß sie beendet ist. Man erkennt das daran, daß ein bestimmtes Fenster fehlt - ich glaube der Objektinspektor.

Gruß
Thorsten

hi Thorsten
Ja der Objektinspektor fehlt, aber nur ganz kurz und zwar solange wie
oben in der Ecke (running) steht.
(running) steht dort aber noch nicht einmal eine Sekunde!!!
Aber das mit der Application kann ich ja mal ausprobieren
Danke erstmal für den Tipp

mfg Ferd

Hallo Ferdinand,
es könnte sein, daß die Applikation ohne offenes Fenster
weiterläuft, und daß deine „blödsinnigen“ Änderungen gar nicht
kompiliert werden. Versuche, einen Menüpunkt „Debug beenden“
(oder so ähnlich) zu finden, und beende den Debug-Modus. Ich
hatte auch schon das Problem, daß die Applikation gelaufen
ist, obwohl ich dachte, daß sie beendet ist. Man erkennt das
daran, daß ein bestimmtes Fenster fehlt - ich glaube der
Objektinspektor.

Gruß
Thorsten

hi Thorsten

Tja das funktioniert nicht
auch den Menüpunkt „end debug“ oder so etwas ähnliches habe ich nicht gefunden.

gruß ferd

Hallo Ferdinand,

probier mal folgendes:

Starte das Programm nicht mit F9, sondern geh erst auf „Projekt / Syntaxprüfung“. Dann werden die Fehler erst mal angezeigt. Wenn es keine Fehler gibt, kompiliere das Programm mit „Projekt / compilieren“. Dann geh in das Projektverzeichnis und starte das Programm durch Doppelklick. Sollte das alles nicht funktionieren, schick mir einfach die Daten. Dann schaun wir mal. Wäre doch gelacht, wenn du das nicht hinbekommst. :smile:

Gruß
Manfred

hey Manfred
das ist der Quelltex von einem meiner Programme:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
brutto: TLabel;
txtbrutto: TEdit;
txtsteuer: TEdit;
txtnetto: TEdit;
btnrechnen: TButton;
btnbeenden: TButton;
steuer: TLabel;
netto: TLabel;
procedure txtbruttoChange(Sender: TObject);
procedure btnbeendenClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.txtbruttoChange(Sender: TObject);

var brutto: double;
var steuer: double;
var netto: double;

begin
brutto := StrToFloat(txtbrutto.Text);
steuer := StrToFloat(txtsteuer.Text);
netto := brutto * (1 - (steuer / (100 + steuer)));
txtnetto.Text := FormatFloat(‚0.00‘, netto);

end;

procedure TForm1.btnbeendenClick(Sender: TObject);

begin
close();
end;

end.

Das sollte ein Programm zur berechnung des Steuerwertes sein

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Ferdinand,

was funktioniert in dem Programm nicht?
Ich habe es (allerdings unter Delphi 5, was aber kein Problem sein sollte) nachvollzogen, mit deinen Bezeichnungen und Variablen, und es funktioniert.

Wenn du das Programm über F9 startest und es gibt eine Fehlermeldung, musst du „Start / Programm zurücksetzen“ wählen oder „strg + F2“ drücken. Erst dann kannst du den Quelltest ändern.

Es gibt einige „Unschönheiten im Programm“. Die Label heißen wie einige Variablen. Das kann zu Problemen führen.

Ein Programm sollte man mit „Application.Terminate“ beenden. Nur dann ist sichergestellt, dass z.B. auch alle DLLs entladen werden.

Wenn du eine Eingabe in das TEdit txtbrutto machst, müssen die anderen TEdits natürlich schon Werte enthalten. Sonst gibt es eine Fehlermeldung. Diese kannst du allerdings mit „try … except … end“ abfangen.

Gruß
Manfred

hi Manfred
Danke erstmal für deine verbesserungen(ich lerne ja noch)
Aber dieses Programm lässt sich bei mir gar nicht erst ausführen!!!
Wenn ich das Problem gelöst habe kann ich mich im andere Sachen kümmern. :smile:
Gruß Ferd

Hallo,

Tja das funktioniert nicht
auch den Menüpunkt „end debug“ oder so etwas ähnliches habe
ich nicht gefunden.

drück Strg+F2, das beendet den laufenden Debug-Prozess.

Gruss, Niels

Hallo Manfred,

Ein Programm sollte man mit „Application.Terminate“ beenden.
Nur dann ist sichergestellt, dass z.B. auch alle DLLs entladen
werden.

das ist nicht richtig. Das schließen des Hauptformulars ruft die Methode Application.Terminate auf. Damit reicht das Schließen des Hauptformulars aus um die Anwendung zu beenden.

Gruss, Niels

…Das schließen des Hauptformulars ruft
die Methode Application.Terminate auf. Damit reicht das
Schließen des Hauptformulars aus um die Anwendung zu beenden.

Gruss, Niels

Stimmt :smile:

Manfred

hi Niels
Danke für den Tipp
aber ich kann meine Programme gar nicht ausführen!!!
schon aber es bleibt noch nicht einmal eine Sekunde offen!!!
Kannst du mir da weiter helfen???
gruß Ferd

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Ferdinand,

eventuell hat sich irgendwo von Dir unbeabsichtigt eine Anweisung in die Projektdatei (die mit der Endung „.dpr“) reingemogelt, die Dein Programm gleich nach dem Start beendet, oder die einzige „CreateForm“-Anweisung dort (für’s Hauptformular) ist verlorengegangen, oder Du hast durch einen versehentlichen unglücklichen Mausklick im Objektinspektor eine Verknüpfung z. B. der „FormShow“-Methode mit der Ereignisbehandlungsprozedur des „Ende“-Buttons erzeugt (das ist die, wo Du als einzige Anweisung das „Close“ reingeschrieben hast). Das wären ein paar mögliche Erklärungen für das seltsame Verhalten Deines Proggis.

Vorschlag, damit Du Dein Problem gelöst kriegst: Pack alle Dateien, die zum Projekt gehören, in ein Winzip-Archiv und schick mir dieses per Mail. Wichtig ist, daß es wirklich alle Dateien sind (weil, wie oben schon angedeutet, die „pas“-Dateien bei Delphi zwar 90% der Wahrheit, aber eben doch nicht die ganze sind). Ich bin mir sicher, daß ich den Fehler in weniger als 2 Minuten gefunden habe. Ich schreib Dir dann auch genau, woran es liegt, und was Du korrigieren mußt.

Mit freundlichem Gruß
Martin

Hi Martin
Danke erst einmal für die beteiligung an meinem Problem :smile:
Ich werde dir alle Dateiendes Programms schicken, wenn du mir noch zwei Fragen beantworten kannst :
Warum funktioniert keins meiner Programme???
(Das ist bei jedem das gleiche Problem)
Oder soll ich Delphi 7 neu installieren???
Gruß Ferd

Hi Ferd,

Danke erst einmal für die beteiligung an meinem Problem :smile:

es hat wahrscheinlich einen ganz blöden Grund. Der muß bloß gefunden werden.

Ich werde dir alle Dateiendes Programms schicken, wenn du mir
noch zwei Fragen beantworten kannst :
Warum funktioniert keins meiner Programme???
(Das ist bei jedem das gleiche Problem)

Ola, das ist in der Tat stark. Ich habe keine Ahnung, warum das bei Dir so ist. Aber bist Du Dir auch sicher, jederzeit zweifelsfrei feststellen zu können, ob eines Deiner Programme gerade läuft („runtime“) oder nicht („design time“)? Deine bisherigen Postings legen nahe, daß Du mit der IDE noch nicht wirklich vertraut bist (was jetzt auf keinen Fall herablassend gemeint ist; wir alle hier waren mal blutige Anfänger, und ich kann Dir sagen, daß ich bei meinen ersten Versuchen mit meinem ersten Delphi (Version 2, ca. 1996) absolut garnichts kapiert hab). Deshalb könnte sich Dein vermutetes Nichtfunktionieren der Programme vielleicht sogar als Irrtum herausstellen.

Oder soll ich Delphi 7 neu installieren???

Sollte sich Dein Problem als harte Nuß herausstellen, kannst Du das immer noch machen. Momentan besteht dazu IMHO kein Anlaß.

Mit freundlichem Gruß
Martin

Hi Martin

es hat wahrscheinlich einen ganz blöden Grund. Der muß bloß
gefunden werden.

Das hoffe ich!!!

daß Du mit der IDE noch nicht
wirklich vertraut bist (was jetzt auf keinen Fall herablassend
gemeint ist;

Allerdings ich habe erst vor ein paar wochen begonnen zu programmieren!!

wir alle hier waren mal blutige Anfänger, und ich
kann Dir sagen, daß ich bei meinen ersten Versuchen mit meinem
ersten Delphi (Version 2, ca. 1996) absolut garnichts kapiert
hab).

Danke fürs „aufbauen“ (das brauche ich) :smile:

Mit freundlichem Gruß zurück Ferd

Hi Martin
Ich hätte da vielleicht eine hilfe:
Wenn ich ein Programm starten möchte werde ich aufgefordert ein projekt zu speichern, wo nur so etwas wie
Application.initials;
Application.Run;
drin steht
diese Zeilen kann ich auch löschen, dann ists das gleiche Problem
aber das heißt ja das dem Programm diese Zeilen völlig egal sind
oder???
Aber die dürfen doch nicht egal sein
denn warum soll ich sie dann speichern???

mit freundlichem Gruß
Ferdinand

Hi Ferd,

Wenn ich ein Programm starten möchte werde ich aufgefordert
ein projekt zu speichern, wo nur so etwas wie

Application.initials;
Application.Run;

wenn das alles ist, was drinsteht, dann ist hier schon was faul. Da muß nämlich wenigstens ein"CreateForm"-Aufruf vorhanden sein, der das Hauptformular erzeugt. Das absolute Minimum, was immer (!)zwischen „begin“ und „end“ in der Projektdatei steht, ist:

Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;

Ich habe gerade ausgetestet, daß es genau zu dem von Dir beschriebenen Verhalten (Programm beendet sich selbst sofort nach dem Start) führt, wenn die zweite Zeile mutwillig entfernt wird.

drin steht diese Zeilen kann ich auch löschen, dann ists das gleiche
Problem

Diese Zeilen zu löschen ist ungefähr so, wie wenn Du bei einem Auto den Benzintank und den Motor ausbaust.

aber das heißt ja das dem Programm diese Zeilen völlig egal
sind oder???

Nein!!! Ein Auto ohne Benzintank und Motor ist auch noch fähig, einen Berg runterrollen, aber das war’s dann auch schon. Laß die Initialize- und die Run-Zeile einfach so, wie sie sind. Du brauchst sie niemals zu ändern, Du darfst sie nicht ändern (auch, wenn dann vermeintlich noch alles funktioniert), und es ist nicht von Interesse, was sie im Detail bewirken.

Aber die dürfen doch nicht egal sein
denn warum soll ich sie dann speichern???

Die Projektdatei ist absolut wichtig! Bei großen Programmen wird sie auch durchaus umfangreich. Für sehr spezielle Erfordernisse kann/muß man auch noch weiteren „richtigen“ Code von Hand da reinschreiben, aber um zu wissen, was hier erlaubt bzw. sinnvoll ist und was nicht, muß man tiefgehende Delphi-Kenntnisse haben.

Martin