Autor Beitrag
tobby_d
Hält's aus hier
Beiträge: 5

WIN XP
D7 Ente
BeitragVerfasst: Mo 26.04.04 22:26 
Hi!

Ich programmier im Moment nicht mit den Delphi-Formularen sondern direkt über die Windows-API mit CreateWindowEx usw.
Wenn ich da jetzt versuch, die Mathe-Funktionen zu benutzen, kommt bei mir immer folgende Compiler-Fehlermeldung:

[Fehler] Project1.dpr(332): Operator oder Semikolon fehlt.

Hat hier jemand ne Ahnung, woran das liegen kann? Ich hab schon alles mögliche probiert, bei den normalen Formularen funktioniert das, bei nonVCL nicht. Es klappen weder die Funktionen aus "System", wie sqr(), sqrt(), sin() cos() usw, noch die aus "Math" (tan() ).

Ich hab an allen möglichen Stellen folgenden Code ausprobiert:

ausblenden Delphi-Quelltext
1:
2:
3:
zahl1:=tan(StrToFloat(temp));
zahl1:=sqr(25);
zahl1:=sqrt(zahl2); usw.


wobei zahl1+2 jew vom Typ Real waren und temp ein String.
Ich hab auch schon im Forum gesucht, aber nichts gefunden
Ich würde mich über eine Antwort freuen, Toby

Moderiert von user profile iconUGrohne: Delphi-Tags hinzugefügt
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 27.04.04 09:38 
Äh, mal ganz dumm: Der Fehler besagt, dass du einen Operator bzw. ein Semikolon vergessen hast. Und wenn er dir die Zeile 332 meldet, dann ist das entweder in selbiger oder in der Zeile davor (331).

Es wäre daher zweckmäßig wenn du deinen Code mal daraufhin überprüfst. Und wenn das alles nichts hilft, dann bringe den kompletten Codeblock, damit wir mehr sehen als nur 3 Zeilen. Und benutze bitte zum Einklammern das [delphi]-Tag, dafür ist´s ja da:
ausblenden Quelltext
1:
2:
3:
[delphi]zahl1:=tan(StrToFloat(temp));
zahl1:=sqr(25);
zahl1:=sqrt(zahl2);[/delphi]
tobby_d Threadstarter
Hält's aus hier
Beiträge: 5

WIN XP
D7 Ente
BeitragVerfasst: Mi 28.04.04 15:44 
Ich hab eigentlich als erstes nachgeguckt, ob ich irgendwo ein Semikolon vergessen hab, aber wenn ich jetzt kein Brett vor meinem Kopf hab, müsste von der Syntax eigentlich alles stimmern. Hier der komplette Code der Procedure:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure BtsqrClick(hWnd: HWND);
begin
  try
    updatebuffer(hWnd);

    zahl1:=sqr(StrToFloat(EdErgebnisText));
    setWindowText(EdErgebnis,PChar(FloatToStr(zahl1)));
    operator:='=';
  except
    on e: exception do MessageBox(0,PChar('Es ist folgender Fehler aufgetreten: '+#13+#13+'"'+e.Message+'".'),'Achtung',0);
  end;
end;


Die Procedure ist aus einem selbstgebauten Taschenrechner. updatebuffer(hWnd) holt u.a. den Text aus einem Edit-Feld in die Variable EdErgebnisText, der Rest ist nicht wichtig, funktioniert auch ohne updatebuffer nich. zahl1 ist eine globale Variable vom Typ Real. Ich habs auch schon mit einer lokalen Variablen ausprobiert, hat keine Wirkung. Statt StrToFloat(EdErgebnisText)) hatte ich auch schon Zahlen eingesetzt, funktioniert trotzdem nicht.
Nach dem gleichen Schema hab ich auch noch sqrt, sin, cos und tan ausprobiert.


Trotzdem Danke für die Antwort, Tobby_D!
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 28.04.04 16:06 
Also, es tut mir leid, aber ich finde keinen Fehler. Ich zweifle deine Aussage nicht an, aber ich hab´s eben mit Delphi 5 Pro und Delphi 7 Pro getestet. Ich gehe mal davon aus, dass die Enterprise-Version von D7 zwar erweitert ist, aber in solchen grundlegenden Dingen nicht anders funktioniert als die kleineren Versionen.

Du musst den Fehler wohl oder übel an anderer Stelle suchen, denn im von dir geposteten Block ist er nicht ... nicht bei mir ...
tobby_d Threadstarter
Hält's aus hier
Beiträge: 5

WIN XP
D7 Ente
BeitragVerfasst: Do 29.04.04 11:37 
Tut mir leid, ich find den Fehler zwar auch nicht, aber er muss trotzdem irgendwo in meinem Programm sein. Wenn ich nämlich jetzt ein neues Formular erzeuge, (ohne die ganzen anderen Prozeduren) funktioniert das auf einmal irgendwie doch. Der Rest von meinem Programm funktioniert auch fehlerfrei, außer den entsprechenden Zeilen. Pi ist komischerweise auch auf einmal 23.

Trotzdem Danke fürs ausprobieren


Tobby_D
Sven
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: Do 29.04.04 11:54 
tobby_d hat folgendes geschrieben:

[Fehler] Project1.dpr(332): Operator oder Semikolon fehlt.


Könntest Du mal bitte den kompletten Quellcode deiner DPR-Datei posten :mahn: Denn schließlich wurde auch in dieser der Fehler gemeldet.

_________________
MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Do 29.04.04 14:12 
Sven hat folgendes geschrieben:
Könntest Du mal bitte den kompletten Quellcode deiner DPR-Datei posten :mahn: Denn schließlich wurde auch in dieser der Fehler gemeldet.
Um Himmels Willen!
Wenn, dann bitte nicht in den Post sondern auf einen Webserver legen. Wenn es mindestens 300 Zeilen sind, wird der Thread zu unübersichtlich.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
tobby_d Threadstarter
Hält's aus hier
Beiträge: 5

WIN XP
D7 Ente
BeitragVerfasst: Fr 30.04.04 15:45 
Ich hab jetzt mal den kompletten Quellcode online gestellt. Der ist relativ umfangreich, aber wenn trotzdem mal jemand reinguckt, würde ich mich echt freuen. Der Link ist:

www.blaue-husaren.com/tmp/Project1.dpr

falls jemand auch die .dof- und die .cfg-Dateien sehen möchte:

www.blaue-husaren.com/tmp/Project1.dof
www.blaue-husaren.com/tmp/Project1.cfg

Das Programm ist ein simpler Taschenrechner, der aber auch Funktionen wie sinus und cosinus usw. haben sollte.
Mit {$DEFINE USEMATH} kann man die entwprechenden Fehlerzeilen ausführen lassen, ansonsten werden diese einfach übersprungen.


Bis denn, Tobby_D
tobby_d Threadstarter
Hält's aus hier
Beiträge: 5

WIN XP
D7 Ente
BeitragVerfasst: Fr 30.04.04 16:08 
Ich bin so ein Idiot...
Es tut mir wirklich leid, dass ihr euch mit diesem Thema beschäftigen mußtet, aber es hat sich mal wieder bestätigt, dass der größte Computerfehler vorm Bildschirm sitzt. Ich Trottel hab vorne im Programm u.a. Pi, Sin, Cos und Tan als Konstanten definiert, weil die ganzen Buttons in einem Array gespeichert hatte und ich dann z.B. den Pi-Button mit Buttons[Pi] aufgerufen hab... Somit konnten diese Funktionen überhaupt nicht funktionierten aber der Rest vom Programm lief problemlos.

Bis denn, Tobby_D
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 30.04.04 16:21 
Einsicht ist der erste Weg zur Besserung. :mrgreen:
Soll heißen: Aus dir kann noch ein Genie werden! :idea: