Italia
Foro

Fehler beim Aufruf

 
- Page 1 -



Georg
Hovenbitzer
Hallo zusammen,

ich wollte mal diese On Unit testen, bekomme beim Aufruf immer den Fehler:

Zeile 1 in On.pcu:
$DEFINE XPSE

XPSE habe ich nicht installiert, sollte aber doch auch ohne gehen - oder ?
KompilierenMarkierenSeparieren
 $U usermessages.pcu = user.
 $U lists.pcu = list.
 $U On.pcu = On.
Declare myEvent&
WindowStyle (2 | 8 | 16 | 32 | 128 | 512)
Window ((%MaxX - 800) / 2),((%MaxY - 600) / 2)-800,600
Edit& = @Control(Edit,,$54001001,20,470,754,20,%hWnd,301,%hInstance,$20000)
myEvent& = on.event(28,Edit&) OnChange

WhileNot %Key = 2

    WaitInput

    If %UMessage = myEvent&

        Print Treffer :-)

    EndIf

EndWhile

on.delevents
on.Close
End
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
01.12.2006  
 



 
- Page 1 -



Georg
Hovenbitzer
Verdammt Bitte mit der Pressung der CDs beeilen

Ich habe es aber auch mal anders versucht:
KompilierenMarkierenSeparieren
Def on(4) !on.dll,on
Declare OnDll&
Declare Edit&
OnDll& = @Usedll(on.dll)
Cls
Edit& = @Control(Edit,,$54001001,50,10,100,20,%hWnd,301,%hInstance,$20000)
On(28,Edit&,102426,%Hwnd)
UserMessages 102426

WhileNot %Key = 2

    WaitInput

    If %UMessage = 102426

        Print Treffer

    EndIf

EndWhile

On(28,Edit&,102426,0)
FreeDLL OnDll&
End

Hat aber auch keinen Erfolg gebracht, eine Cambiamento im Edit wird nicht erkannt.
Wenn ich die On2.dll von hier versuche, bekomme ich immer eine Schutzverletzung.
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
01.12.2006  
 



Hm schau mal in den Unitsource wie die DLL tatsächlich verwendet wird. Hier nochmal die neuste DLLVersion.

8 kB
Hochgeladen:01.12.2006
Downloadcounter55
Download
 
01.12.2006  
 




Georg
Hovenbitzer
Hallo iF,

kannst du mir vielleicht etwas helfen, ich komme mit dem Source der PCU nicht klar.
Mir fällt es doch recht schwer XPSE Code zu lesen.

Ich habe nun folgendes ohne Erfolg versucht:
KompilierenMarkierenSeparieren
Declare OnDll&
Declare Edit&
Declare ProcAddr&
Declare UMsg&
Cls
OnDll& = @Usedll(on.dll)
ProcAddr& = @External(kernel32,GetProcAddress,OnDll&,on)
Edit& = @Control(Edit,,$54001001,50,10,100,20,%hWnd,301,%hInstance,$20000)
UMsg& = @Call(ProcAddr&,28,Edit&,102426,%hWnd)
UserMessages UMsg&,102426

WhileNot %Key = 2

    WaitInput

    If %UMessage = UMsg&

        Print Treffer1

    ElseIf %UMessage = 102426

        Print Treffer2

    EndIf

EndWhile

@Call(ProcAddr&,28,Edit&,102426,0)
FreeDLL OnDll&
End
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
01.12.2006  
 



Ich schau gleich mal...
 
01.12.2006  
 



Geht ganz prima:
KompilierenMarkierenSeparieren
 {$cleq}
Declare OnDll&
Declare Edit&
Declare ProcAddr&
Declare eventID&
Cls
OnDll& = @Usedll(on.dll)
ProcAddr& = @External(kernel32,GetProcAddress,OnDll&,on)
Edit& = @Control(Edit,,$54001001,50,10,100,20,%hWnd,301,%hInstance,$20000)
eventID& = @Call(ProcAddr&,515,Edit&,102426,%hwnd)
print eventID&
UserMessages 102426

WhileNot %Key = 2

    WaitInput

    If %UMessage = 102426

        Print Treffer1

    EndIf

EndWhile

@Call(ProcAddr&,515,Edit&,102426,0)
FreeDLL OnDll&
End
 
01.12.2006  
 




Georg
Hovenbitzer
Stimmt, auch in meinem Code klappt es mit 515 LinksDoppelKlick.
Jetzt habe ich erst kappiert, es klappen nur die Messages die in der Unit angegeben sind
Da ich bis dato es mit der EasyEvent gemacht habe, bin ich nicht auf die Idee gekommen das OnChange nicht supportati wird.

Was ich aber immer noch nicht geschaft habe, ist eine Proc aufzurufen:
KompilierenMarkierenSeparieren
Declare OnDll&
Declare Edit&
Declare ProcAddr&
Declare eventID&
Cls

Proc Test

    Print per Proc
    Return 0

EndProc

OnDll& = @Usedll(on.dll)
ProcAddr& = @External(kernel32,GetProcAddress,OnDll&,on)
Edit& = @Control(Edit,,$54001001,150,100,100,20,%hWnd,301,%hInstance,$20000)
@Call(ProcAddr&,0,0,0,1)
eventID& = @Call(ProcAddr&,521,Edit&,@ProcAddr(Test,0),%hWnd)
Print eventID& =  + @Str$(eventID&)

WhileNot %Key = 2

    WaitInput

EndWhile

@Call(ProcAddr&,515,Edit&,@ProcAddr(Test,0),0)
FreeDLL OnDll&
End

Wo liegt denn hier der Fehler schon wieder
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
01.12.2006  
 



Stop! Das ist unrichtig das nur die Messages funktionieren die in der Unit deklariert sind. Die DLL macht keinen Unterschied.

Die Sache ist eine andere! WaitInput lässt sich manchmal nicht durchbrechen - bei bestimmten Messages. Bei Scrollbars hab ich es auch schon festgestellt das beim Scrollen waitinput trotz gesetzter Message nicht durchbrochen wird.

Das mit der Proc geht etwas anders - wart ich schau mal:
 
01.12.2006  
 



Schau mal so gehts:
KompilierenMarkierenSeparieren
Declare OnDll&
Declare Edit&
Declare ProcAddr&
Declare eventID&
Cls
OnDll& = @Usedll(on.dll)
ProcAddr& = @External(kernel32,GetProcAddress,OnDll&,on)
Edit& = @Control(Edit,,$54001001,50,10,100,20,%hWnd,301,%hInstance,$20000)
Call(ProcAddr&,0,0,0,1)
eventID& = @Call(ProcAddr&,515,Edit&,procaddr(doit,3),%hwndan>

...
KompilierenMarkierenSeparieren
proc doit

    parameters a&,b&,c&
    print a&,b&,c&
    return 0

endproc

 
01.12.2006  
 



Dein OnChange wird vlt. garnicht ausgelöst..., probier mal

WM_KEYDOWN = { $100 | 256 }
WM_KEYFIRST = { $100 | 256 }
WM_KEYLAST = { $108 | 264 }
WM_KEYUP = { $101 | 257 }
 
01.12.2006  
 



 
- Page 2 -



Nico
Madysa
Mit Verlaub, Unità sind doch bereits compiliert, wie kann da eine Zeile der bedingten Compilierung drinstehen?
 
Nico Madysa
01.12.2006  
 




Jac
de
Lad
Unità sind nur vorcompiliert, sonst potuto der Interpreter die gar nicht verstehen.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
01.12.2006  
 




RGH
Jacob Liebeck
Unità sind nur vorcompiliert, sonst potuto der Interpreter die gar nicht verstehen.


Sehr richtig!
Außerdem sollten auch Unità in der Lage sein, gegebenenfalls auf bedingte Compilierung reagieren zu können, etwa um mit verschiedenen XProfanversionen zu funktionieren.

Saluto
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
01.12.2006  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

3.044 Views

Untitledvor 0 min.

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie