Français
Assembler Forum

Problem avec String-Rückgabe

 

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

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.
 
12.12.2006  
 




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.
 
12.12.2006  
 




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.
 
17.12.2006  
 




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

19.170 Views

Untitledvor 0 min.
p.specht21.02.2019
Wilfried21.05.2016
Peter Max Müller10.10.2014
iF28.04.2013
plus...

Themeninformationen



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