PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verständnisfrage zum Subroutinenaufruf



roboguy
22.09.2005, 21:48
Ich verwende das RNKEYLCD-Modul. Dazu wird ja auch ein bisschen Beispielcode mitgeliefert.
Ich habe da bei einem Codeabschnitt leichte Verständnisprobleme.
Es handelt sich um eine Interruptroutine, die ihrerseits eine Subroutine (ist auch als Sub definiert).
Kann eine Subroutine ohne Call aufgerufen werden? So steht es nämlich im Code:

Tasten_interrupt:
Taste = Rnlcd_getscan()
If Taste <> 0 Then 'Wurde Taste gedrückt
Stemp = "Taste: " + Str(taste)
Rnlcd Stemp
Rnlcd_cr
End If
Return

Rnlcd und Rnlcd_cr sind die besagten Subroutinen. BASCOM meckert darüber auch nicht beim Compilieren.
Kann mir da jemand weiterhelfen?


Bei einer I

hrei
23.09.2005, 01:29
Kann eine Subroutine ohne Call aufgerufen werden?

Yepp, das geht problemlos :-).
Ich schreibe das Call zwar immer noch mit, das liegt aber nur daran, daß ich mir einbilde, dann später mein eigenes Geschreibsel besser memorieren zu können. Nötig ist es aber nicht.

Grüße
Henrik

ShadowPhoenix
23.09.2005, 01:33
Wolltest du nicht von uns gehen, Henrik?
Dein 66er Beitrag sollte doch der letzte sein!

pebisoft
23.09.2005, 08:50
das ist das eigenartige bei bascom. keine einheitlichkeit. die anfänger haben dann schwierigkeiten das nachzuvollziehen.
seltsamerweise kann man die anderen "call" nicht weglassen.
hier ist noch nachholbedarf des herstellers gefragt.
mfg pebisoft

hrei
23.09.2005, 11:28
das ist das eigenartige bei bascom. keine einheitlichkeit. die anfänger haben dann schwierigkeiten das nachzuvollziehen.
seltsamerweise kann man die anderen "call" nicht weglassen.
hier ist noch nachholbedarf des herstellers gefragt.


Ja hört denn das nie auf?

Welche anderen "Call"? Was genau ist an dem Hilfetext für Anfänger "schwierig"?:

With the CALL statement, you can call a procedure or subroutine.
For example: Call Test2


The call statement enables you to implement your own statements.

You don't have to use the CALL statement:
Test2 will also call subroutine test2

When you don't supply the CALL statement, you must leave out the parenthesis.
So Call Routine(x,y,z) must be written as Routine x,y,x

Wenn die Anwender öfter einen Blick in die Hilfe werfen würden, gäbe es manche Fragen schlicht nicht.


Henrik

pebisoft
23.09.2005, 13:17
es ist blödsinn hoch 3 wenn eine sub-routine mit call aufgerufen werden muss und die für den interrupt nicht obwohl die als sub declariert wird. da nützen auch keine ausreden wie: schau doch mal hier nach und schau doch mal da nach. es ist halt fakt, das hier keine gleichheit herrscht.
da nützt auch kein meckern und auch kein rumschreien von angeblich geistig wendigen schwachmaten.
mfg pebisoft

Carbolo
23.09.2005, 13:44
:-) um es mal abzukürzen: es kann immer mal passieren, wenn man nicht Hardwarenah proggt, dass in der IDE Sachen vereinheitlicht werden, die aber -in der Wirklichkeit - nicht zusammen gehören. So ist das auch mit Sub vs. Interrupt. Deshalb hierüber Diskussionen zu führen wird nicht viel bringen, da die Hardware nun mal das bleibt, was sie ist. In Bascom kann man sich in diesen Punkten der Hardware auch nicht entziehen, muss man halt lernen. Dafür wird der Rest des HW-nahen proggens in Basic nicht benötigt.

hrei: auch ich kenne - und unterstütze- den RTFM, aber da die meisten hier proggen selber beigebracht haben, und über die manchmal -zugegeben- "unlogischen" Stolpersteine fallen, denke ich, dass wiederkehrende Fragen sehr wohl kommen dürfen, solange es nicht übertrieben wird. :-) musst sie ja nicht beantworten, dann findet sich ein anderer, der sie beantwortet. Vielleicht sieht er die Frage zum ersten mal.... So als Bsp:selbst in VBA kannst du Sub´s ohne call aufrufen, solange du nur max. ein Wert übergibst. Sobald Du aber mehrere Parameter zum Übergeben deklarierst geht one Call nichts mehr. (ohne jetzt weiter auszuführen, wieso nicht)

Schöne Grüße:
Z

hrei
23.09.2005, 14:38
hrei: auch ich kenne - und unterstütze- den RTFM, aber da die meisten hier proggen selber beigebracht haben, und über die manchmal -zugegeben- "unlogischen" Stolpersteine fallen, denke ich, dass wiederkehrende Fragen sehr wohl kommen dürfen, solange es nicht übertrieben wird. :-) musst sie ja nicht beantworten, dann findet sich ein anderer, der sie beantwortet. Vielleicht sieht er die Frage zum ersten mal....

Da sind wir uns völlig einig, allergisch reagiere ich erst, wenn man die Quellen angibt, unter denen sich der Fragesteller selbst belesen kann und darauf besteht, daß ihr/ihm komplexe Zusammenhänge bei Adam und Eva anfangend, in einer Art Privattutorial vorgelesen werden.


So als Bsp:selbst in VBA kannst du Sub´s ohne call aufrufen, solange du nur max. ein Wert übergibst. Sobald Du aber mehrere Parameter zum Übergeben deklarierst geht one Call nichts mehr. (ohne jetzt weiter auszuführen, wieso nicht)

Jeder Programmiersprachendialekt hat seine Eigenheiten. In dem hier zur Debatte stehenden Fall kann es, weil die meisten Programmbeispiele das Call nutzen, durchaus zu Missverständnissen kommen. Das ist hier auch kein Problem und die Frage wurde von mir zunächst auch ohne jeden Seitenhieb beantwortet.

Wenn dann aber jemand kommt und Bascom die Schuld für die Wissenslücken/das mangelnde Lesen der Hilfe gibt, ist das lediglich blinde Hetze.

Grüße
Henrik