Erster Test fehlgeschlagen



Erster Test fehlgeschlagen

Mario P., 09.04.2008 23:48: Hallo,
als erstes vorweg: Ich habe NULL Ahnung von C++ !!
Bei meinem heutigen (ersten) Versuchen mit Profan2Cpp (Testversion 1.6c und Borland-Compiler 5.5) bin ich gleich stecken geblieben. Hier die Prog-Ausgaben:
Profan2Cpp - Testversion 1.6c
Projekt laden --->
Eingabe: C:\DATEN\Profan 10\PrintMaker\VirtPage2.prf
Ausgabe: C:\DATEN\Profan 10\PrintMaker\VirtPage2_cpp\
Binde Include-Dateien ein... ok.
Lese Header-Dateien... ok.
Überprüfe Syntax... ok.
Ersetze Header-Definitionen... ok.
Erstelle Verzeichnisse... ok.
Übersetze... ok.
Erstelle PrfMain.cpp... ok.
Kopiere Header... ok.
Kopiere Bibliotheken... ok.
Generiere Makefile... ok.
Projekt erfolgreich übersetzt!
[334 Zeilen in 381 ms]
MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
"C:\Borland\BCC55\bin\bcc32.exe" -o".\obj\PrfMain.obj" -c -w-8026 -w-8057 -w-8060 -w-8017 -w-8004 -w-8066 -w-8041 -q -O2 -tWM -v- -D_WINVER=0x0400 -D_WIN32_WINNT=0x0400 -I"C:\Borland\BCC55\include" PrfMain.cpp
PrfMain.cpp:
"C:\Borland\BCC55\bin\bcc32.exe" -o".\obj\VirtPage2.obj" -c -w-8026 -w-8057 -w-8060 -w-8017 -w-8004 -w-8066 -w-8041 -q -O2 -tWM -v- -D_WINVER=0x0400 -D_WIN32_WINNT=0x0400 -I"C:\Borland\BCC55\include" VirtPage2.cpp
VirtPage2.cpp:
Error E2268 VirtPage2.cpp 125: Call to undefined function 'schnappi_5' in function __stdcall ProfanThreadProc(void *)
Error E2268 VirtPage2.cpp 129: Call to undefined function 'schnappi_10' in function __stdcall ProfanThreadProc(void *)
*** 2 errors in Compile ***
** error 1 ** deleting ".\obj\VirtPage2.obj"
Finished.
Wenn ich das richtig erkenne, wird nach der Funktion 'schnappi_5' bzw. 'schnappi_10'
gesucht. Dies sind bei mir in Profan 2 Proc's (welche da auch funktionieren). Lt. Hilfe soll dies ja auch als Proc angelegt werden und nicht (mehr) als Funktion.
Hab's mit der Original-.prf und der Ausgabe von XPSE (welches auch nix zu beanstanden hat) probiert, immer das gleiche Ergebnis.
Ansonsten könnte ich mich für Profan2Cpp (und auch irgendwann mal 'ne Vollversion) schon begeistern, wenn die erstellten Programme dann wirklich schneller sind (aber das wurde wurde hier ja schon getestet)...
Mario


Michael Wodrich, 10.04.2008 00:59: Hast Du evtl. die Prozeduren verschachtelt?
Sonst hilft da das Posten eines Minimalbeispiels, wo der Fehler auch vorkommt.
Meist entdeckt man dann beim Abspecken auf absolutes Minimum meist selbst den Fehler.
Schöne Grüsse
Michael Wodrich


Mario P., 10.04.2008 01:38: Hätte jetzt um diese Zeit nicht mit einer so schnellen Antwort gerechnet.
  Zitat: „Michael Wodrich: Hast Du evtl. die Prozeduren verschachtelt?
Denke ich nicht, siehe Beispiel, bei dem es auch auftritt :

Declare Pos5&, Pos10&, Ende%
Proc Schnappi_5
   Parameters X%
   If (@Val(@Right$(@Str$(X%),1)) >=0) AND (@Val(@Right$(@Str$(X%),1)) <3)
      WhileNot (@Val(@Right$(@Str$(X%),1)) = 0) OR (@Val(@Right$(@Str$(X%),1)) = 5)
         dec X%
      EndWhile
   ElseIf (@Val(@Right$(@Str$(X%),1)) >=5) AND (@Val(@Right$(@Str$(X%),1)) <8)
      WhileNot (@Val(@Right$(@Str$(X%),1)) = 0) OR (@Val(@Right$(@Str$(X%),1)) = 5)
         dec X%
      EndWhile
   Else
      WhileNot (@Val(@Right$(@Str$(X%),1)) = 5) OR (@Val(@Right$(@Str$(X%),1)) = 0)
         inc X%
      EndWhile
   EndIF
   Return @Str$(X%)
EndProc
Proc Schnappi_10
   Parameters X%
   Return @Str$(@Round(X%,-1))
EndProc
Set("Decimals",0)
WindowStyle 512+16
WindowTitle "Test-Seite"
Window 50,50-400,400
CreateMenu
AppendMenuBar 1000,"<<<      FERTIG - TEST BEENDEN      >>>"
@Create("Text",%HWnd,"Mauskoordinaten im...",50,20,150,20)
@Create("Text",%HWnd,"...5er Raster :",20,50,100,20)
@Create("Text",%HWnd,"...10er Raster :",20,80,100,20)
Pos5& = @Create("Text",%HWnd,"---,---",120,50,55,20)
Pos10& = @Create("Text",%HWnd,"---,---",120,80,55,20)
Clear Ende%
WhileNot Ende%
   GetMessage
   SetText Pos5&, Schnappi_5 (%MouseX) + "," + Schnappi_5 (%MouseY)
   SetText Pos10&, Schnappi_10 (%MouseX) + "," + Schnappi_10 (%MouseY)
   If @MenuItem(1000)
      Ende% = 1
   EndIf
EndWhile
end
Im Anhang hab ich mal das ganze Gewusel, welches Profan2Cpp auf meiner Platte hinterlassen hat (nicht böse gemeint), in eine .rar gepackt, incl. diesem Quellcode hier.
Vieleicht hilfts ja bei der Fehlersuche.
Mario

TestSeite_cpp.rar


David Strutz, 10.04.2008 01:45: Hinter Funktionsaufrufe ein Freizeichen vor der Folgeklammer?


Mario P., 10.04.2008 01:52:   Zitat: „iF: Hinter Funktionsaufrufe ein Freizeichen vor der Folgeklammer?
DANKE !!
Geht doch !! So einfach sind halt die kleinen Freuden !!!
Jetzt hab ich auch den ShareWare-Hinweis, welcher von Profan2Cpp eingebunden wird, gesehen.
Scheint aber was zu sein, was XProfan, XPSE und Profan2Cpp nicht anmeckern.
Mario


Mario P., 10.04.2008 02:03: ... und das erzeugte .exe-dingens ist ja auch noch nur 42% so gross wie die Profan-Exe !!
Klasse Programm !! Muss ich doch glattweg eben mal mit paar anderen Sachen probieren !!
Aber wenn ich das ganze Kauderwelsch im C++ - Ordner sehe, bleibe ich doch lieber bei XProfan.
Denn wofür wäre sonst Profan2Cpp gemacht, wenn nicht für solch Unwissenden wie mich !!
Mario


Sebastian K., 10.04.2008 08:21: Hallo,
schön, wenn ein Problem schon gelöst ist, bevor ich den Thread überhaupt gelesen haben!
Aufrufe von Prozeduren als Funktionen mit Leerzeichen vor der öffnenden Klammer machen Profan2Cpp 1.6 in der Tat leider noch Probleme... In Profan2Cpp 2.0, das in Kürze (naja, mal schauen, wann genau) dann parallel mit XProfan 11 erscheint, wird das Problem aber behoben sein. Wenn Interesse besteht, würde ich im Moment also raten, auf die neue Version zu warten.
MfG
Sebastian
P.S.: Dass die mit C++ erzeugte Exe kleiner ist als die von XProfan gilt leider nur für relativ kleine Programme, da sich in diesem Fall auszahlt, dass aus den Bibliotheken nur dazugelinkt wird, was auch wirklich benötigt wird während XProfan natürlich immer die komplette Runtime dazulinkt. Es ist allerdings so, dass der native Maschinencode deutlich grösser ist als XProfan-P-Code (die .prc-Dateien), sodass bei umfangreichen Programmen die C++-Variante dann grösser ist...


Michael Wodrich, 12.04.2008 19:38: @Mario:
Eine kleine Anregung:

----- Schnipp ----- Schnipp ----- Schnipp -----
Proc Schnappi_5
   Parameters X%
   '  If (@Val(@Right$(@Str$(X%),1)) >=0) AND (@Val(@Right$(@Str$(X%),1)) <3)
   If ((x% mod 10) >= 0) and ((x% mod 10) <= 3)
      '     WhileNot (@Val(@Right$(@Str$(X%),1)) = 0) OR (@Val(@Right$(@Str$(X%),1)) = 5)
      WhileNot ((x% mod 10) = 0) OR ((x% mod 10) = 5)
         dec X%
      EndWhile
      ----- Schnapp ----- Schnapp ----- Schnapp -----
   EndIf
EndProc
Schöne Grüsse
Michael Wodrich
Mod liefert den Teilungsrest


Jac, 12.04.2008 21:06: 

(@Val(@Right$(@Str$(X%),1)) >=0)
Ist das nicht immer wahr?


Mario P., 12.04.2008 23:16: @Jac: Stimmt schon, aber mit der GANZEN ZEILE kommt eine andere Bedingung raus. Ist nicht nach der "feinen" Art geschrieben, aber ich glaube, da hat so jeder seine Marotten...
@Michael: Danke, so gehts auch. Bin im Moment froh, das es so klappt, wie es ist. Aber ich werd's mir merken.
Mario


Jac, 12.04.2008 23:26: Aber weil es eine Und-Bedingung ist, kannst du den Teil weglassen.
Ja, ich hab auch so meine Marotten, die ich besser nirgendwo preisgebe.


Mario P., 13.04.2008 02:26: Achso, jetzt weis ich, was du meinst. Naja, die Marotten....
Hat aber vieleicht den Vorteil, das ich in einem Jahr in meinem Quelltext noch
erkennen kann, wie ich (vieleicht auch manchmal falsch) gedacht habe.
Und die paar Byte mehr an Code sollten doch "das Kraut nicht fett machen". Und m.E. ist's ja nicht falsch, sondern nur "verdrückt ausgekehrt" oder "doppelt gemoppelt".
Und wer weis, irgendwann könnten die Mauskoordinaten (wie in diesem Beispiel) ja auch mal negativ sein...
Mario


Dies ist die Offlinevariante vom Thread [Erster Test fehlgeschlagen].

Valid CSS!

©2006 XProfan.Com