> Danke für die Anregung
Bitte, gern geschehen. Es macht mir immer wieder freude, anderen u helfen!
> habe über Macros in der Hilfe nachgelesen, aber ich habe nicht alles begriffen
Sei unbesorgt, mir ging es genauso. Du musst keine Macros benutzen, wenn du es nicht willst oder es noch nicht verstehst. Deswegen lacht dich keiner aus oder dein Programm gilt deswegen nicht als schlecht! Wichtig ist nur, dass du mir/uns sagst, was du schon alles kannst.
Nicht, dass ich/wir dir hier den tollsten Code auftischen du aber nur die Hälft verstehst.
> immer wieder erhalte ich Hinweise sorgsam mit dem Speicher oder der Performance zu sein
Nun, zunächst einmal: Der Computer soll dir die Arbeit abnhemen, nicht umgekehrt. Dafür gibt es die Dinger ja.
Du sollst also nicht dem Computer schon alles so weit wie möglich vorkauen. Trotzdem ist es ja auch in deinem Interesse, dass dein Programm möglichst flott läuft, oder?
Man muss also einen Kompromiss finden. Ich gestehe, ich möchte meine Programme möglichst flotter als flott haben. Jedoch möchte ich diesen Gedanken nicht anderen, z. B. dir aufzwängen, denn jeder programmiert so, wie es ihm am besten gefällt.
Als Einsteiger, so wie dir würde ich trotzdem empfehlen, so zu programmieren, wie es dir gefällt. Z. B. würde ich an deiner Stelle eher so arbeiten, dass der Code (für dich) schön verständlich und übersichtlich ist.
> mich darauf hinwissen wirds wohl wichtig sein, oder?
Nun, wie gesagt: Stell dir vor, du benutzt ein AntiViren Programm. Da möchtest du schon, dass der sich beeilt, oder?
Fazit: ich finde, Geschwindigkeit ist schon wichtig, aber nicht das Wichtig
ste. Übersichtlichkeit des Codes, Verständlichkeit, Stabilität des Programms gehen vor.
> Nur, ich dachte ich Frag mal nach.
Das ist richtig, Frag immer weiter, gerade als Einsteiger.
> Weiter weis ich nicht wo die Variabeln von und bis deklariert werden müssen und wie es gemacht werden soll mit welcher art von Variable
Ist jetzt nicht böse gemeint, aber weißt d schon was Prozeduren sind? Ja, oder?
Eine Prozedur ist eine Funktion, die selbst programmierten Code enthält. Dieser Code lässt sich an anderen Stellen im Programm so aufrufen, als wäre es ein einziger Befehl. Ein naheligender Grund, Prozeduren zu benutzen, ist also, um Schreibarbeit zu sparen.
Bleiben wir beim Beispiel "Zufallszahl zwischen 2 und 10". Statt überall im Programm zu schreiben:
kannst du von nun an den Befehl
benutzen. Das ist doch praktischer, nicht?
Vorteil 1: Die Prozedur nimmt dir die Denkarbeit ab. Du brauchst nur den Bereich zu definieren, in dem die Zufallszahl liegen soll.
Vorteil 2: Du brauchst nicht immer Random() zu benutzen. Diese Prozedur ist universell, das heißt: Du kannst mit ihr nicht nur Zufallszahlen von 2-10, sondern auch von 3-15 oder 4-20 berechnen lassen. Alles was du tun musst, ist lediglich den Bereich anzugeben:
Code: Alles auswählen
ZufallszahlBereich(3, 15)
ZufallszahlBereich(4, 20)
ZufallszahlBereich(1000, 2000)
Bei dieser Prozedur brauche ich keine weiteren Variablen, deshalb muss ich auch keine weiteren Variablen deklarieren.
Die Variablen 'von' und 'bis' sind bei der Procedure automatisch deklariert, und zwar von Typ .l (Long) und als Protected. Was diese beiden Dinge heißen, kannst du ja in der Hilfe nachlesen. von und bis sind Parameter, und Parameter sind immer automatisch "Protected". Das ist in diesem Fall etwas... naja, wie soll ich es sagen... "schwerer" zu verstehen, ich weiß.
Vielleicht kann ich es dir an diesem Beispiel deutlich machen. Ich speichere die Zufallszahl innerhalb der Prozedur erst in einer anderen Variable zwischen, bevor ich sie zurückgebe:
Code: Alles auswählen
Procedure ZufallszahlBereich(von, bis)
Protected Zahl Random(bis-von)+von
ProcedureReturn Zahl
EndProcedure
Hier muss nur ausdrücklich Zahl als Long und Protected deklariert werden, mit den Parametern von und bis geschieht dies automatisch. Da bei der Variablendeklaration Long der Standardtyp ist, muss man .l nicht extra hinschreiben, kann man aber zur beseren Übersicht.
In diesem Beispiel ist es aber nicht nötig, die Zufallszahl erst noch zwischenzuspeichern. Dies sollte ja auch nur zur Verdeutlichung sein.
> Auch ist mir nicht klar wie ich dieses Macro, wo aufrufe?
Wie ich bereits schrieb, du kannst das Macro genauso wie eine Prozedur aufrufen. Stell das Macro einfach irgendwo am Anfang deines Codes ab.
Zum Aufruf des Macros genügt -wie bei der Procedure- ein einfaches
.
Ich schireb ja bereits, du merkst den Unterschied beim Programmieren nicht direkt. Der Unterschied liegt eben darin, dass Macros vom Compiler beim Kompilieren ersetzt werden und dadurch den Code schneller machen, denn eine Prozedur muss erst noch aufgerufen werden.
Ich hoffe, ich konnte die vieles klarer machen. Es macht mir Spaß, zu sehen, wie du dich freust! Ehrlich!
