Français
Forum

Fehlermeldung: Falscher Parametertyp %...

 

funkheld
allô, guten journée.
j'ai cet Programme pour XPSE quelque chose modifié.
et es venez toujours une Fehlermeldung.
je trouver den Typ de faute pas:



wohin steckt qui ?
la ligne 88 ist im XProfEd vide.
KompilierenMarqueSéparation
 {$cleq}
Def CopyMemory(3) !"KERNEL32","RtlMoveMemory"
Declare Ende%, SendeBtn&, EndeBtn&, Edit&
Declare Groesse&, Text$, ProgHndl&, AltProc&
Declare CopyData#, EigeneDaten#
Struct SCopyData = ~COPYDATASTRUCT
Dim CopyData#, SCopyData
Window 20,20-400,400
WindowTitle "Programm2"
EndeBtn& = Create(Button,%hWnd,Beenden,105,50,70,20)
SendeBtn& = Create(Button,%hWnd,Senden,15,50,70,20)
Edit& = Create(Edit, %hWnd, , 10, 15, 170, 24)

Proc Senden

    Parameters Nachricht$

    With CopyData#

        .dwData& = 0
        .cbData& = SizeOf(Nachricht$)
        .lpData& = Addr(Nachricht$)

    EndWith

    Sendmessage(ProgHndl&,~WM_COPYDATA,%hWnd,Addr(CopyData#))

EndProc

Proc WndProc

    parameters wnd&, msg&, wparam&, lparam&

    If msg&=~WM_COPYDATA

        CopyMemory(CopyData#,lparam&,12)
        Groesse& = CopyData#.cbData&
        Dim EigeneDaten#, Groesse&
        CopyMemory(EigeneDaten#,CopyData#.lpData&,Groesse&)
        Text$ = String$(EigeneDaten#,0)
        Dispose EigeneDaten#

    EndIf

    return call(AltProc&,wnd&,msg&,wparam&,lparam&)

Endproc

AltProc&=~SetWindowLong(%hwnd,~GWL_WNDPROC,ProcAddr(WndProc,4))

While 1

    ProgHndl&=FindWindow("Programm2")
    Case ProgHndl&: Break
    Sleep 100

EndWhile

Usermessages ~WM_COPYDATA

WhileNot Ende%

    WaitInput

    If %Key = 2

        Ende% = 1

    ElseIf GetFocus(EndeBtn&)

        Ende% = 1

    ElseIf GetFocus(SendeBtn&)

        Senden GetText$(Edit&)

    ElseIf %umessage=~WM_COPYDATA

        SetText Edit&, Text$

    Endif

EndWhile

Dispo
CopyData# Fin

merci.

Gruss
peter

31 kB
Hochgeladen:23.02.2013
Downloadcounter42
Download
 
23.02.2013  
 



Typ % alors un Int -

probablement erwartet XProfan à qui Stelle ne...aucune Int -

probablement chez Anweisungen comment cette:
KompilierenMarqueSéparation
Create(Button,%hWnd,Beenden,105,50,70,20)
>

Dürfte so marcher:
KompilierenMarqueSéparation
Create("Button",%hWnd,"Beenden",105,50,70,20)
>

Nochwas:
KompilierenMarqueSéparation
Du zeigst pour une wProc sur une interpretierte Proc -

vais dabei de Programmabstürzen aus, la fois ici la fois là. Pour quelque chose comme avec ProcAddr

absolument sur une nProc montrer là cet nativen Funktionen APC- & threadsicher

sommes.
 
23.02.2013  
 



Hauptfenster Subclassing z.B. so:
KompilierenMarqueSéparation
ou bien sans globale Variable:
KompilierenMarqueSéparation
Garantiert absturzsicher.

Siehe aussi Beispiele am Ende cet Dokumentes: [...] 

Hinweis:

XProfan-Fehlermeldungen-Fehlerzeile-Angabe beim Einsatz avec XPSE
devrait qui la ligne dans qui dateiname.ENH-Dossier entsprechen.
 
23.02.2013  
 




funkheld
Jup, merci. Habe je maintenant geändert.
Es startet, mais friert ensuite un.
Irgendwie ist cela Programme pas sur den neuesten Stand.

Woran liegt cela car eh bien?
ou bien la hâte du irgendwo un Programme , wohin on données de einem la fenêtre zum anderen la fenêtre senden peux ?

merci.

Gruss
peter
 
23.02.2013  
 



Pour cette ist qui Funktion sendMessage oui là, um données à Controls/ la fenêtre trop senden.

avec cela peux on entier pratique 3 ganzzahlige Werte übermitteln:
KompilierenMarqueSéparation
 
23.02.2013  
 



Nachtrag:

je vois cela Du wm_copyData verwenden vouloir -

pouvoir eig. seulement Sinn si on plus que 3 Werte übermitteln voudrais comment z.B.

une Stringinhalt. wm_copyData comme UserMessage peux mais pas zuverlässig

marcher là zum la date des Auslesens de WP et LP qui données pas

plus zur Disposition stehen (doit) là qui données normal seulement so longtemps bestehen

jusqu'à qui nouvelle qui wProc erreicht hat. tu peux cependant wm_copyData-

übermittelte données dans qui wProc conservé et de là aus weiterverwenden.
 
23.02.2013  
 




funkheld
j'ai ici quelque chose trouvé. Funktioniert pour meinen Vorstellungen..

Hiermit sende je maintenant :
KompilierenMarqueSéparation
 {$cleq}
Declare Ende&, senden&, Dlg&,wert&
declare IsActive&, InMemory&, SizeOfMem&, hmap&, hMapView&
Dlg&     = Create("Dialog", %hwnd, "Senden", 220, 190, 410, 280)
senden& = Create("Button", Dlg&, "Senden", 110, 220, 80, 30)
Ende&    = Create("Button", Dlg&, "Ende", 210, 220, 80, 30)
IsActive& = 0
InMemory& = 4000
'1024 Bytes Speicher
SizeOfMem& = 1024
'Speicherbereich anlegen
hmap&     = ~CreateFileMapping(-1,0,~PAGE_READWRITE,0,SizeOfMem&,"MeinSpeicher")
'Zeiger auf Speicherbereich ermitteln
hMapView& = ~MapViewOfFile(hMap&,$000F001F, 0, 0, 0)
'die ersten 4 Bytes erhalten das Fensterhandle
Long   hMapView&,0 = %hwnd
'die nächsten 4 Bytes bleiben frei für das Fensterhandle von Programm 2
wert&=0

WhileNot @Clicked(Ende&)

    WaitInput

    If @Clicked(senden&)

        If Long(hMapView&,4) <> 0

            IsActive& = 1

        Endif

        dat_send

    EndIf

EndWhile

End

proc dat_send

    wert&=wert&+1
    long hMapView&,8 = wert&

    If IsActive&

        sendMessage(Long(hMapView&,4),InMemory&,0,0)

    endif

endproc


Hiermit wird empfangen:
KompilierenMarqueSéparation
 {$cleq}
Déclarer IsActive&, InMemory& , Ende&, SizeOfMem&, hmap&, hMapView&
IsActive& = 0
InMemory& = 4000
Ende& = 0
'1024 Bytes grenier
SizeOfMem& = 1024
'Speicherbereich anlegen
hmap& = ~CreateFileMapping(-1,0,~PAGE_READWRITE,0,SizeOfMem&,"MeinSpeicher")
'aiguille sur Speicherbereich ermitteln
hMapView& = ~MapViewOfFile(hMap&,$000F001F, 0, 0, 0)
Cls
'qui zweiten 4 Bytes conservé cela Fensterhandle
Long hMapView&,4 = %hwnd
Utilisateur Messages InMemory&

whilenot Ende&

    Waitinput

    Si %UMessage = InMemory&

        Imprimer long(hMapview&,8)

    Endif

Endwhile

~UnmapViewOfFile(hMapView&)
~CloseHandle(hMapView&)
Fin

Wird cet : %UMessage chaque fois pour dem durchlauf sur "0" gesetzt et récente beschrieben chez einer neuen Übertragung ou bien bleibt chez qui ersten liaison %UMessage sur la valeur InMemory& ?

merci.

Gruss
peter
 
24.02.2013  
 



exposition la fois hiernach wirds sur 0 gesetzt:
KompilierenMarqueSéparation
 {$cleq}
cls
usermessages 12345
sendMessage(hWnd,12345,0,1)
sendMessage(hWnd,12345,0,2)
sendMessage(hWnd,12345,0,3)

do{

    waitinput 1000
    case %uMessage : print ulParam

/font>


car qui Ausgabe lautet:

321
 
24.02.2013  
 




funkheld
Jup, merci.
maintenant peux je qui SendMessage erkennen bzw einordnen.

Gruss
peter
 
24.02.2013  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

3.478 Views

Untitledvor 0 min.
Andreas Koch10.09.2014
Ernst12.05.2014
Nico Madysa20.02.2014
mein02.06.2013
plus...

Themeninformationen

cet Thema hat 2 participant:

iF (5x)
funkheld (4x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie