hallo...
ich habe schon einige Tutorials von Iczelion durchgearbeitet und habe aber Schwierigkeiten bei den proto deklarationen am Anfang:
WinMain proto :DWORD, :DWORD, :DWORD, :DWORD
wenn ich richtig liege, dann sage ich hier dem Assembler nur, dass diese Routine, 4 Werte von der grösse DWORD auf dem Stack brauche, um die entsprechende Unterroutine aufzurufen? wenn ich z.b. zwei Strings vergleichen will, dann müßte dies so aussehen:
vergleich proto :DWORD,:DWORD
..und dann
invoke vergleich, string1, string2
vergleich proc ...??????????????? ; was muss ich hier reinschreiben?
...blabla
...blabla
vergleich endp
-----------------------------------------
was ist der Unterschied zwischen "hwnd" und "hWnd"
vielen Dank
Aldebaran
proto - Deklarationen
Moderatoren: crack, Krüsty, Marwin
- Marwin
- Moderator
- Beiträge: 307
- Registriert: Donnerstag 8. Mai 2003, 21:19
- Wohnort: Seelow, Deutschland
- Kontaktdaten:
Hi Aldebaran,
Wenn man einem Unterprogramm einen String "übergeben" möchte, so übergibt man eigentlich nur die Adresse des Strings im Speicher. (es wäre ein riesiger Aufwand, wenn man den gesamten String er in den Stack "schieben" müsste!)
Und da kommt ADDR ins Spiel, so muss es richtig lauten:
Die Prozedur sieht dann zum Beispiel folgendermaßen aus:
Es werden also die zu übergebenden Argumente aufgeführt, jeweils mit dem Variablennamen, welche die Prozedur verwendet, und der Datentyp-Angabe.
Der Unterschied zwischen "hwnd" und "hWnd"? Nur das große W.
Nein im Ernst, es sind nur unterschiedliche Variablennamen, mehr nicht. Diese beiden werden oft für die Handles von Fenstern verwendet. Ich persönlich benutze lieber hWindow, aber wie man seine Variablen nennt ist Geschmackssache.
Marwin
Das ist richtig.vergleich proto :DWORD,:DWORD
Das ist in diesem Fall falsch, da du hier Strings und keine Integer übergeben willst.invoke vergleich, string1, string2
Wenn man einem Unterprogramm einen String "übergeben" möchte, so übergibt man eigentlich nur die Adresse des Strings im Speicher. (es wäre ein riesiger Aufwand, wenn man den gesamten String er in den Stack "schieben" müsste!)
Und da kommt ADDR ins Spiel, so muss es richtig lauten:
Code: Alles auswählen
invoke vergleich, ADDR string1, ADDR string2Code: Alles auswählen
vergleich PROC zeichenkette1 :DWORD, zeichenkette2 :DWORD
.
.
.
vergleich ENDP
Der Unterschied zwischen "hwnd" und "hWnd"? Nur das große W.
Nein im Ernst, es sind nur unterschiedliche Variablennamen, mehr nicht. Diese beiden werden oft für die Handles von Fenstern verwendet. Ich persönlich benutze lieber hWindow, aber wie man seine Variablen nennt ist Geschmackssache.
Marwin