| |
|
|
- Seite 1 - |
|
| Hallo Sebastian...
Es geht um folgenden Quelltext aus [...] Thread: KompilierenMarkierenSeparierenTestprogramm Timer
Profan Version 9
$H Windows.ph
-Proc Einstellungen
Proc Einstellungen
Declare hD%, hA%, hB%, OK%, hTime%
Declare hF1%, hT1%
Clear OK%
Dialogfenster erzeugen
hD% = @Create("Dialog",%hWnd,"Einstellungen",%WinLeft+80,%WinTop+155,230,190)
hF1% = @Create("Font","Arial",16,0,0,0,0)
hT1% = @Create("Text",hD%,"Einstellungen...",10,10,220,20)
SetFont hT1%,hF1%
hTime% = @Create("TimeEdit", hD%, "00:00:00", 10, 35, 70, 24)
hB% = @Create("Button",hD%,"&Nachstellen",10,120,100,28)
hA% = @Create("Button",hD%,"&Abbrechen",120,120,100,28)
WhileNot Ok%
WaitInput
If @Clicked(hB%) Nachstellen
Ok% = 1
Aktionen hier
ElseIf @Clicked(hA%) Abbrechen
Ok% = 1
ElseIf (%Key = 2) ALT+F4 bzw. schließen
Ok% = 1
EndIf
EndWhile
DeleteObject hF1%
@DestroyWindow(hD%)
EndProc
-Prozedur die in bestimmten Zeitintervallen ausgefuehrt wird (4x pro Sekunde)
Proc Timer
Inc Timer_Busy%
Locate 5,5
Print "Timer:" + @str$(Timer_Busy%) + " Durchläufe"
EndProc
-Main----------------------------------------------------------------
Declare Timer_Busy%,Ende%
WindowStyle 26
WindowTitle "Timertest PHU-60"
Window 100,100 - 370,200
cls
Timer setzen (4x pro Sekunde, 250ms)
Declare TimerID&
TimerID& = ~SetTimer(0, 0, 250, @ProcAddr("Timer", 0))
-Menue---------------------------------------------------------------
PopUp "&Programm"
AppendMenu 108,"&Einstellungen"
AppendMenu 109,"&Ende"
Ende% = 0
WhileNot Ende%
WaitInput
If @MenuItem(108)
Einstellungen
Endif
If @MenuItem(109)
~KillTimer(0, TimerID&)
Ende% = 1
Endif
Wend
End
Bei meinen Profan2Cpp Versionen gibts es nicht nur Kuddelmuddel im Dialogfenster, sondern es entsteht sogar (zeitweise) eine Zugriffsverletzung. Kann man das irgendwie beheben? [...] ist die Erklärung für Profan. |
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
| Aktuelle Beta noch nicht, mache ich aber noch. Der Fehler tritt auf, wenn über das Menü der Dialog aufgerufen wird - aber nicht immer (Rechnerabhängig). Im Anhang ist meine EXE. |
|
|
| |
|
|
|
| Hast du mal den Downloadlink? Bei der Beta, die ich mir eben heruntergeladen habe, tritt der Fehler immer noch auf (Zugriffsverletzung), ist bloß seltener... |
|
|
| |
|
|
|
Sebastian König | Mit dem zweiten Code konnte ich unter XProfan selbst den Fehler jetzt reproduzieren (Dialogfenster bleibt leer und reagiertt nicht auf Schließen). Mit Profan2Cpp allerdings trotz zahlreicher Versuche allerdings noch immer nicht... liegt es vielleicht wirklich an meinem System oder müsste der Fehler, wenn er auf einem Rechner mit XProfan auftritt auch mit Profan2Cpp auftreten?
Was ich schon sagen kann ist, dass zumindest die Ursache mit Profan2Cpp eine andere sein müsste. Hier nutzen nämliche nur normale Prozeduren den gemeinsamen Parameter-Stack - bei CallBack-Funktionen und eingebauten Befehlen und Funktionen wird der ganz normale Stack (wie in ASM) zur Übergabe benutzt, sodass sich hier die Aufrufe nicht gegenseitig stören können...
P.S.: Deine EXE ist leider nur die .cpp-Datei... |
|
|
| |
|
|
|
Sebastian König | [quote:f458ed4358]Hast du mal den Downloadlink? Bei der Beta, die ich mir eben heruntergeladen habe, tritt der Fehler immer noch auf (Zugriffsverletzung), ist bloß seltener... [/quote:f458ed4358] Hier der direkte Link: [...] .
Welche Version genau hast Du denn jetzt? |
|
|
| |
|
|
|
| Zeigt 1.5a an. Die EXE habe ich neu hochgeladen (hoffentlich jetzt richtig, komme gerade aus der Nachtschicht ) |
|
|
| |
|
|
|
Sebastian König | [quote:bebe64f95b]Zeigt 1.5a an.[/quote:bebe64f95b] Ok, die ist schon wieder relativ alt . Unter dem Link oben findest Du die aktuelle Beta-Version 1.5.9f. Darin sind neben einigen Bugfixes auch schon die neuen XProfan 10-Features enthalten.
[quote:bebe64f95b]Die EXE habe ich neu hochgeladen (hoffentlich jetzt richtig, komme gerade aus der Nachtschicht )[/quote:bebe64f95b] Ähmm... wo? Unter dem Link oben befindet sich immer noch die gleiche Datei... (EDIT: ich sehe gerade: der doppelte Begriff Link oben ist natürlich kontextabhängig zu interpetieren ) |
|
|
| |
|
|
|
| Hallo Sebastian...
Ich werde einen Quelltext ,bauen bei dem das Problem häufiger auftritt, kann aber etwas dauern.... |
|
|
| |
|
|
|
Sebastian König | [quote:5ea9f5dcc3]Ich werde einen Quelltext ,bauen bei dem das Problem häufiger auftritt, kann aber etwas dauern.... [/quote:5ea9f5dcc3] Super - danke!
Dann tritt das Problem also auch mit 1.5.9f noch auf? Wenn ja, habe ich noch eine Idee: Versuch mal bitte, den SetTimer-Aufruf so zu gestalten:
P2CPP: <USE_CALL_ST,USE_EXTERNAL_ST> Timerid& = ~Settimer(%Hwnd,333,25,@Procaddr(Timer,4)) P2CPP: </USE_CALL_ST,/USE_EXTERNAL_ST>
(funktioniert allerdings noch nicht mit 1.5a) Vielleicht liegt die Ursache ja im Multithread-Konzept der übersetzten Programme... |
|
|
| |
|
|
|
| Ob der Fehler Auftritt oder nicht hängt u.a. von der Speicherauslastung ab. Unter der neuen Beta konnte ich den Fehler noch nicht nachvollziehen. Unter Windows2000 hatte ich auch mit der älteren Profan2Cpp Version bislang noch keine Fehlermeldung. Melde mich wieder. |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
| Hallo Sebastian...
Gute Nachrichten => in der neuen Beta ist der Fehler nicht mehr vorhanden, die läuft tadellos.
Im Anhang das Testprogramm mit den beiden Profan2Cpp Versionen kompilert. Timerbug3.exe verursacht bei mir den Fehler unter Windows98, Timerbug4.exe nicht.
Gruß
Andreas KompilierenMarkierenSeparierenDEF @GetDlgCtrlID(1) !"USER32","GetDlgCtrlID"
DEF @ButtonClicked(1) @GetDlgCtrlID(@&(1))=-%MENUITEM
Testprogramm Timer
Profan Version 9
$H Windows.ph
-Main----------------------------------------------------------------
Declare Timer_Busy%,Ende%,Durch%
Declare TimerID&,Create%,T_Text&,Test#
WindowStyle 26
WindowTitle "Timertest mir Profan2Cpp Version 1.5.9f"
Window 100,100 - 370,200
cls
Let T_TEXT&=@CREATETEXT(%HWND,"",30,30,300,30)
-Menue---------------------------------------------------------------
PopUp "&Programm"
AppendMenu 108,"&Einstellungen"
AppendMenu 109,"&Ende"
Ende% = 0
Timer setzen (4x pro Sekunde, 250ms)
TimerID& = ~SetTimer(%HWND,333,20,@ProcAddr("Timer",4))
Settimer 100
WhileNot Ende%
WaitInput
IF @RND(10)=1
Setmenuitem 108
endif
If @MenuItem(108)
Einstellungen
Endif
If @MenuItem(109)
~KillTimer(%HWND,333)
Ende% = 1
Endif
Wend
End
-Proc Einstellungen
Proc Einstellungen
Declare hD%, hA%, hB%, OK%, hTime%
Declare hF1%, hT1%
Clear OK%
Dialogfenster erzeugen
hD% = @Create("Dialog",%hWnd,"Einstellungen",%WinLeft+80,%WinTop+155,230,190)
hF1% = @Create("Font","Arial",16,0,0,0,0)
hT1% = @Create("Text",hD%,"Einstellungen...",10,10,220,20)
SetFont hT1%,hF1%
hTime% = @Create("TimeEdit", hD%, "00:00:00", 10, 35, 70, 24)
hB% = @Create("Button",hD%,"&Nachstellen",10,120,100,28)
hA% = @Create("Button",hD%,"&Abbrechen",120,120,100,28)
WhileNot Ok%
WaitInput
IF @RND(30)=1
LET OK%=1
endif
If @ButtonClicked(hB%) Nachstellen
Ok% = 1
Aktionen hier
ElseIf @ButtonClicked(hA%) Abbrechen
Ok% = 1
ElseIf (%Key = 2) ALT+F4 bzw. schließen
Ok% = 1
EndIf
EndWhile
DeleteObject hF1%
@DestroyWindow(hD%)
EndProc
-Prozedur die in bestimmten Zeitintervallen ausgefuehrt wird (4x pro Sekunde)
Proc Timer
Parameters P1&,P2&,P3&,P4&
IF Durch%=0
LET Durch%=1
Dim Test#,1000000
Inc Timer_Busy%
Locate 7,5
Print "Timer:" + @str$(Timer_Busy%) + " Durchläufe"
Settext T_Text&,"Timer:" + @str$(Timer_Busy%) + " Durchläufe"
Drawtext 30,0,@Time$(0)
Drawtext 100,0,@Time$(1)
Dispose Test#
Let Durch%=0
endif
EndProc
|
|
|
| |
|
|
|
Sebastian König | Hallo Andreas,
[quote:fc655c1c78]Gute Nachrichten => in der neuen Beta ist der Fehler nicht mehr vorhanden, die läuft tadellos.[/quote:fc655c1c78] Ok, super! Ist natürlich schwer zu sagen, aber ich vermute mal, dass die oben schon erwähnte Anpassung in 1.5.9f das Problem gelöst hat...
[quote:fc655c1c78]Im Anhang das Testprogramm mit den beiden Profan2Cpp Versionen kompilert. Timerbug3.exe verursacht bei mir den Fehler unter Windows98, Timerbug4.exe nicht.[/quote:fc655c1c78]Ganz sicher? Bei mir ist es nämlich genau umgekehrt - 4 stürzt ab, 3 nicht... Timerbug3 ist laut Titelzeile auch die, die mit 1.5.9f erstellt wurde.
MfG
Sebastian |
|
|
| |
|
|
|
| [quote:a8aaf87176=Sebastian König]Hallo Andreas,
[quote:a8aaf87176]Im Anhang das Testprogramm mit den beiden Profan2Cpp Versionen kompilert. Timerbug3.exe verursacht bei mir den Fehler unter Windows98, Timerbug4.exe nicht.[/quote:a8aaf87176]Ganz sicher? Bei mir ist es nämlich genau umgekehrt - 4 stürzt ab, 3 nicht... Timerbug3 ist laut Titelzeile auch die, die mit 1.5.9f erstellt wurde.
MfG
Sebastian[/quote:a8aaf87176] Hallo Sebastian...
Ja, hast Recht - hab mich vertan.
Gruß
Andreas |
|
|
| |
|
|