| |
|
|
Matthias Arlt | mon ersten Versuche avec Assembler gestalten sich dank Franks Einführungskurs besser comme gedacht...! eh bien habe je mais folgendes Problem bzw. nen Denkfehler drin:
une ASM-Routine ermittelt une String et écrit cette dans une Bereich. cela Lecture klappt avec invoke MessageBox , 0, addr buffer, usw. bestens. si je eh bien statt Ausgabe dans einer Messagebox den String im Profan-Programme weiterverarbeiten veux, comment übergebe je cette korrekt? (addr buffer allez oui seulement pour einem invoke...)
Matthias |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 12.12.2006 ▲ |
|
|
|
|
Jörg Sellmeyer | si Du den String dans einem Bereich la hâte, müßtest Du ihn avec le texte$=String$(B#,Addr&) auslesen peut. Wobei Addr& = 0 ist, si qui String am Anfang des Bereichs steht. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 12.12.2006 ▲ |
|
|
|
|
Michael Dell | dans qui règle ist Buffer oui un DWord (Long) cela sur une Speicherbereich zeigt. ensuite sollte comme dernier Befehl mov eax, buffer reichen.
je persöhnlich serait dans XProfan une Bereich ou bien une avec Chr$(0) gefüllten String$ comme zusätzlichen paramètre transfert et cette ensuite z.B.: avec invoke MemCopy... qui données transfert, cela hat ensuite den Vorteil cela Du allen grenier dans qui Funktion zum Ende hin freigeben peux. Dabei peux Du ensuite avec eax encore une Fehlercode zurückgeben, so wird cela aussi dans qui WinAPI häufig gemacht. |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 12.12.2006 ▲ |
|
|
|
|
Matthias Arlt | @Jörg Genauso dachte je oui aussi, mais...
declare txt# dim txt#,256
Folgender Code dans qui erzeugten DLL
AsmStart LVGetItemText
Paramètres hdl&,spalte&,txt#
LOCAL lvi:LV_ITEM
invoke SendMessage, para1, LVM_GETNEXTITEM, -1, LVNI_FOCUSED
mov lvi.iItem, eax
mov ebx, para2
mov lvi.iSubItem, ebx
mov lvi.imask, LVIF_TEXT
lea eax, para3
mov lvi.pszText, eax
mov lvi.cchTextMax, 256
invoke SendMessage, para1, LVM_GETITEM, 0, addr lvi
invoke MessageBox, 0, addr para3, 0, MB_OK
mov eax, para3
AsmEnd
plus dans Profan
...Aufruf qui DLL-Funktion avec ...hdl&,spalte&,txt#)
imprimer string$(txt#,0) bleibt erfolglos, au cours de Messagebox korrekt fünktioniert
wohin alors liegt mon faute ???
@Michael merci, je werds la fois avec MemCopy versuchen. la fois voyons... |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 12.12.2006 ▲ |
|
|
|
|
Michael Dell | ah bon, ici pourrait un simple Retour txt# pour mov eax, para3 reichen. si cela pas funzt declariere txt2# avec den gleichen werten comment txt# et schreibe Retour txt2# et pour qui Funktion imprimer string$(txt2#,0). |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 12.12.2006 ▲ |
|
|
|
|
Jörg Sellmeyer | Müßte que voici pas hdl&,spalte&,Addr(txt#)) appeler? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 12.12.2006 ▲ |
|
|
|
|
Matthias Arlt | So, alle Varianten durchprobiert (txt#...txt2#...addr(txt#)...), mais Ergebnis malheureusement comment gehabt. Au cours de sous Profan7 immerhin encore unbrauchbare marque avec string$(txt#,0) ausgelesen volonté, passiert sous XProfan pour qui Messagebox rein garnichts. Versuche avec invoke MemCopy... schlagen à cause de Zugriffsverletzung également fehl. cela Rätseln allez alors plus... |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 12.12.2006 ▲ |
|
|
|
|
Frank Abbing | lea eax, para3 mov lvi.pszText, eax mov lvi.cchTextMax, 256
muss heissen:
m2m lvi.pszText, para3 mov lvi.cchTextMax, 256
ou bien
mov eax, para3 mov lvi.pszText, eax mov lvi.cchTextMax, 256
para3 ist oui qui aiguille sur une String et qui Listviewmessage erwartet aussi une aiguille sur une String.
mov eax, para3 AsmEnd
Ist eigentlich Quatsch, weil qui Returnwert = txt# ist. Incidemment peux du besser den Debugger anstelle einer Messagebox nutzen, um Zahlenwerte ou bien Cordes anzuzeigen. Probier la fois:
PrintDec eax
ou bien
PrintStringByAddr para3
P.S.: Prima, dass dir mon Kurs plaisons hat. |
|
|
| |
|
|
|
Matthias Arlt | @Frank Besten Dank, funktioniert parfait ! la hâte mir très geholfen !!!
Ansonsten klappt cela DLL-Erstellen déjà pas mal. j'ai Deinen XPIA quasi comme Standalone-Tool dans PRFellow eingebunden et bastle mir avec cela sur droite komfortable Weise aus dem Editor heraus mon DLL (pour derzeit encore Profan7) zusammen. Ggf. lade je cela la fois comme PRFellow-Erweiterung ici hoch...
Matthias |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 12.12.2006 ▲ |
|
|
|
|
Frank Abbing | Prima, cela peux bestimmt qui une ou bien autre gebrauchen. PrFellow erfreut sich oui toujours grosser Beliebtheit. |
|
|
| |
|
|
|
Matthias Arlt | j'ai inzwischen encore un weiteres Problem avec einem Stringvergleich. Folgender Code funktioniert zwar comme Solcher, liefert mais toujours ungleich zurück. aussi si Pufferinhalte définitif juste sommes:
... cld mov ecx,sizeof Buffer2 lea esi,Buffer1 lea edi,Buffer2 repe cmpsb
jnz ungleich jz juste ...
Habe déjà unterschiedlichste Varianten durchprobiert, mais malheureusement erfolglos...!?
Matthias |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 17.12.2006 ▲ |
|
|
|
|
Frank Abbing | repe cmpsb ist veraltert. prends anstelle dessen lieber qui APIs lstrcmp(), bzw. lstrcmpi(). Sicherer et viel plus rapide. |
|
|
| |
|
|