proto - Deklarationen

Offizieller deutscher Support für das MASM32 SDK. Download FAQ

Moderatoren: crack, Krüsty, Marwin

Antworten
Aldebaran
Newbie
Beiträge: 7
Registriert: Samstag 9. August 2003, 11:10

Beitrag von Aldebaran » Samstag 9. August 2003, 14:53

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
ja schewu, i ze duze dobre tak :)

Benutzeravatar
Marwin
Moderator
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland
Kontaktdaten:

Beitrag von Marwin » Samstag 9. August 2003, 19:05

Hi Aldebaran,
vergleich proto :DWORD,:DWORD
Das ist richtig.
invoke vergleich, string1, string2
Das ist in diesem Fall falsch, da du hier Strings und keine Integer übergeben willst.
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 string2
Die Prozedur sieht dann zum Beispiel folgendermaßen aus:

Code: Alles auswählen

vergleich PROC zeichenkette1 :DWORD, zeichenkette2 :DWORD
.
.
.
vergleich ENDP
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. :lol:
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

Aldebaran
Newbie
Beiträge: 7
Registriert: Samstag 9. August 2003, 11:10

Beitrag von Aldebaran » Samstag 9. August 2003, 23:33

danke, alles klar jetzt :)

zu hwnd: soviel ich mich erinnere, hatte ich einmal Probleme beim compilieren, weil ich im Programmcode diese Sache unterschiedlich geschrieben hatte ...deshalb meine Frage ;)

ciao
Aldebaran
ja schewu, i ze duze dobre tak :)

Benutzeravatar
Marwin
Moderator
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland
Kontaktdaten:

Beitrag von Marwin » Samstag 9. August 2003, 23:55

Achso. Ja, wenn du mit MASM arbeitest, dann musst du natürlich Groß-/Kleinschreibung beachten. (bei TASM wahrscheinlich auch, ich benutze es aber nicht, bin mir deshalb nicht sicher)

Marwin

Antworten