| |
|
|
Matthias Arlt | Mi ersten Versuche con Ensamblador gestalten se dank Franks Einführungskurs mejor como pensamiento...! Nun Yo aber folgendes Problema o. nen Denkfehler drin:
Un ASM-Rutina ermittelt una String y schreibt esta en una Zona. Das Auslesen klappt con invoke MessageBox , 0, addr buffer, usw. bestens. Wenn Yo nun en lugar de Edición en uno Messagebox el String en el Profano-Programa weiterverarbeiten voluntad, como übergebe Yo esta korrekt? (addr buffer va sí sólo una invoke...)
Matthias |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 12.12.2006 ▲ |
|
|
|
|
Jörg Sellmeyer | Si usted el String en un Zona hast, müßtest Usted ihn con texto$=String$(B#,Addr&) auslesen puede. Wobei Addr& = 0 es, si la String al Anfang des Bereichs es. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 12.12.2006 ▲ |
|
|
|
|
Michael Dell | In el Regel es Buffer sí una DWord (Largo) el en una Speicherbereich zeigt. Dann debería como letzter Befehl mov eax, buffer reichen.
Yo persöhnlich sería en XProfan una Zona oder una con Chr$(0) gefüllten String$ como zusätzlichen Parámetro transferencia y esta entonces z.B.: con invoke MemCopy... el Daten transferencia, el ha entonces el Vorteil el Usted allen Speicher en el Función para Ende hin liberación kannst. Dabei kannst Usted entonces con eax todavía una Fehlercode zurückgeben, así el auch en el WinAPI häufig gemacht. |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 12.12.2006 ▲ |
|
|
|
|
Matthias Arlt | @Jörg Genauso pensamiento Yo en efecto, aber...
declarar txt# dim txt#,256
Folgender Code en el erzeugten DLL
AsmStart LVGetItemText
Parámetros 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
más en Profano
...Aufruf el DLL-Función con ...hdl&,spalte&,txt#)
imprimir cadena$(txt#,0) restos erfolglos, während Messagebox korrekt fünktioniert
Wo also liegt mein Fehler ???
@Michael Gracias, Yo werds veces con MemCopy versuchen. Tiempo sehen... |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 12.12.2006 ▲ |
|
|
|
|
Michael Dell | Ach así, hier podría una einfaches Volver txt# después de mov eax, para3 reichen. Si el no funzt declariere txt2# con el gleichen werten como txt# y escribir Volver txt2# y después de el Función imprimir cadena$(txt2#,0). |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 12.12.2006 ▲ |
|
|
|
|
Jörg Sellmeyer | Müßte que aquí no hdl&,spalte&,Addr(txt#)) heißen? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 12.12.2006 ▲ |
|
|
|
|
Matthias Arlt | So, todos Varianten durchprobiert (txt#...txt2#...addr(txt#)...), aber Ergebnis desafortunadamente como gehabt. Während bajo Profano7 immerhin todavía unbrauchbare Signo con cadena$(txt#,0) ausgelesen voluntad, passiert bajo XProfan después de el Messagebox rein garnichts. Versuche con invoke MemCopy... schlagen wegen Zugriffsverletzung ebenfalls fehl. Das Rätseln va also más... |
|
|
| 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
oder
mov eax, para3 mov lvi.pszText, eax mov lvi.cchTextMax, 256
para3 es sí el Zeiger en una String y el Listviewmessage esperado auch una Zeiger en una String.
mov eax, para3 AsmEnd
Ist eigentlich Quatsch, porque el Returnwert = txt# es. Übrigens kannst du mejor el Debugger anstelle uno Messagebox nutzen, en Zahlenwerte oder Cuerdas anzuzeigen. Probier veces:
PrintDec eax
oder
PrintStringByAddr para3
P.S.: Prima, dass dir mein Kurs gefallen ha. |
|
|
| |
|
|
|
Matthias Arlt | @Franco Besten Dank, funktioniert perfekt ! Hast me muy geholfen !!!
Ansonsten klappt el DLL-Erstellen ya bastante bien. Yo habe Su XPIA quasi como Standalone-Tool en PRFellow eingebunden y bastle me así en bastante komfortable Weise de el Editor heraus mi DLL (para actualmente todavía Profano7) zusammen. Ggf. lade Yo el veces como PRFellow-Erweiterung hier hoch...
Matthias |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 12.12.2006 ▲ |
|
|
|
|
Frank Abbing | Prima, el kann determinado el una u otros gebrauchen. PrFellow erfreut se sí siempre todavía grosser Beliebtheit. |
|
|
| |
|
|
|
Matthias Arlt | Yo habe inzwischen todavía una weiteres Problema con un Stringvergleich. Folgender Code funktioniert zwar como Solcher, liefert aber siempre ungleich zurück. Auch si Pufferinhalte definitiv igual son:
... cld mov ecx,sizeof Buffer2 lea esi,Buffer1 lea edi,Buffer2 repe cmpsb
jnz ungleich jz igual ...
Posesiones ya unterschiedlichste Varianten durchprobiert, aber desafortunadamente erfolglos...!?
Matthias |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 17.12.2006 ▲ |
|
|
|
|
Frank Abbing | repe cmpsb es veraltert. Tomar anstelle dessen más bien el APIs lstrcmp(), o. lstrcmpi(). Sicherer y viel más rápido. |
|
|
| |
|
|