| |
|
|
| 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 per Profan. |
|
|
| |
|
|
|
| Hier tritt er häufiger auf: KompilierenMarkierenSeparierenDEF @GetDlgCtrlID(1) !"USER32","GetDlgCtrlID"
DEF @ButtonClicked(1) @GetDlgCtrlID(@&(1))=-%MENUITEM
Testprogramm Timer
Profan Version 9
$H Windows.ph
-Main----------------------------------------------------------------
Declare Timer_Busy%,Ende%
Declare TimerID&,Create%,T_Text&,Test#
WindowStyle 26
WindowTitle "Timertest PHU-60"
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,25,@ProcAddr("Timer",4))
WhileNot Ende%
WaitInput
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 @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&
Dim Test#,1000000
Inc Timer_Busy%
Locate 5,5
Print "Timer:" + @str$(Timer_Busy%) + " Durchläufe"
Settext T_Text&,"Timer:" + @str$(Timer_Busy%) + " Durchläufe"
se Test#
EndProc
|
|
|
| |
|
|
|
Sebastian König | Hallo Andreas,
seltsam - ich konnte den beschriebenen Fehler bei mir (WinXP Prof. SP2 auf aktuellem Update-Stand) leider nicht reproduzieren... weder Zugriffsverletzung noch Kuddelmuddel treten auf.
Hast Du es auch schon mit der aktuellen Beta-Version 1.5.9f getestet? Dort habe ich nämlich u.a. ein Detail bei der Behandlung von CallBack-Funktionen-Funktionen geändert, das sonst evtl. zu Problemen hätte führen können...
MfG
Sebastian |
|
|
| |
|
|
|
| Aktuelle Beta noch nicht, mache ich aber noch. Der Fehler tritt auf, wenn circa das Menü der Dialog aufgerufen wird - aber nicht immer (Rechnerabhängig). Im Anhang ist meine EXE. |
|
|
| |
|
|
|
| Hast du mal den Download Link? 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-File... |
|
|
| |
|
|
|
Sebastian König | [quote:f458ed4358]Hast du mal den Download Link? 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 è sich immer noch die gleiche File... (EDIT: ich sehe gerade: der doppelte Begriff Link oben ist naturalmente 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 Io l' Fehler noch nicht nachvollziehen. Unter Windows2000 hatte ich auch mit der älteren Profan2Cpp Version finora noch keine Fehlermeldung. Melde mich wieder. |
|
|
| |
|
|