Seite 1 von 2

[Erledigt] Zähler in Procedure?

Verfasst: 12.04.2009 09:07
von Ractur
Hallo,

also keine Ahnung, ich habe folgenden Code in einer Procedure:

Code: Alles auswählen

Global Dim myarray(10)

k+1
myarray(k) = i
If k > 9
k = 0
EndIf

Debug myarray(1)
Debug myarray(2)
i ist immer ein anderer Wert, warum aber bekomm ich immer nur ein Wert bei myarray(1) ? myarray(2) ist immer leer?

Wenn ich den Zähler in die Hauptschleife mache gehts, in der Procedure gehts nicht? Warum?

Danke...

Verfasst: 12.04.2009 09:23
von ts-soft
Würdest Du bitte mal den kompletten Code posten, damit man versteht um
was es geht. Der gepostete Schnippsel ist verdammt dazu 0 zu sein :wink:

Re: Zähler in Procedure?

Verfasst: 12.04.2009 10:20
von Batze
Ractur hat geschrieben:also keine Ahnung, ich habe folgenden Code in einer Procedure:
Wenn ich mal davon ausgehe dass der tatsächlich so in einer Prozedur steht, dann werden k und i bei jedem Aufruf wieder auf 0 gesetzt
Static könnte dir dann weiterhelfen. Aber poste mal den ganzen Code.

Verfasst: 12.04.2009 10:24
von jojo1541
Zu der Frage, wieso Myarray(1) und Myarray(2) immer 0 ist:

Du fragst nur Myarray(1) ab, da "k+1 = 1". Variablen sind ohne vorheriges zuweisen eines Wertes immer 0.

So verhält es sich auch mit deiner Variable "i". sie bekommt keinen Wert zugewiesen und ergibt so 0.

Wenn du nun Myarray 1 und 2 debugst, ergibt myarray(1) 0, da ihm der Wert 0 zugewiesen wurde und Myarray(2) ergibt 0, weil ihm kein Wert zugewiesen wurde.

Ich hoffe ich konnte dir helfen. :wink:

Falls du vorher noch Variablen deklariert hast, wäre es nützlich, die auch mitanzugeben.

Re: Zähler in Procedure?

Verfasst: 12.04.2009 10:25
von Ractur
Batze hat geschrieben: Wenn ich mal davon ausgehe dass der tatsächlich so in einer Prozedur steht, dann werden k und i bei jedem Aufruf wieder auf 0 gesetzt
Bei k stimmt das, er kommt nicht über "1" hinaus, allerdings frage ich mich warum? Liegt wohl weil ich Global Dim in der Procedure habe und er es immer wieder neu intialisiert?

Auch mit

Code: Alles auswählen

k = k+1
gings nicht...

Hmm ja, allerdings frag ich mich dann wieso er das in der Hauptschleife dann nicht genauso macht?

(Sicher ists nur was, was ich übersehen habe, also ein Fehler meiner Seite)

Grüsse Ractur..

P.s. ich habs mittlerweile anders "erledigt" und das ganz in der Hauptschleife nun stehen, und frag die Vari eben dann halt in der Procedure ab. Werd aber später das nochmal so umbauen das es wieder
in der Procedure ist, rein aus Neugier. Allerdings, nun erstmal mit Family zum Oster"marsch" ;)

Danke! Ractur

Verfasst: 12.04.2009 11:00
von jojo1541
die Frage ist, liegt (der Teil) deine(r) Procedure, den du hier gepostet hast, in einer Schleife?

Ansonsten wird ja nur einmal k+1 ausgeführt.

Edit: grad gelesen: Wenn du den Array in deiner Schleife ständig neu dimensionierst, wird er immer wieder mit Nullen überschrieben. Variablen und Arrays müssen grundsätzlich nur einmal dimensioniert werden.

Verfasst: 12.04.2009 11:03
von Kaeru Gaman
@Ractur:

also, bei aller Liebe und auch wenn das hier der Anfänger-Bereich ist...

so wie du das grad gemacht hat, ist das keine Art und Weise,
in Zukunft wirst du das Forum anständig benutzen oder deinen Frisör fragen!


wenn du code postest, dann poste code, den man direkt copy/paste übernehmen kann und der den Fehler zeigt!

und wenn dir Leute helfen, dann geh gefälligst drauf ein!


wenn du sowieso nicht zuhörst
> Hmm ja, allerdings frag ich mich dann wieso er das in der Hauptschleife dann nicht genauso macht?
dann machs von vorne herein alleine und belämmer das Forum gar nicht erst.
Bild

Verfasst: 12.04.2009 19:46
von Ractur
volti hat geschrieben:Wenn du den Array in deiner Schleife ständig neu dimensionierst, wird er immer wieder mit Nullen überschrieben. Variablen und Arrays müssen grundsätzlich nur einmal dimensioniert werden.
Hi, danke :allright: Daran lag es auch, ja bisher hatte ich noch kein Array benötigt, wusste nicht genau, dachte er würde es nur einmal dimensionieren. Daran lag es nun funktioniert es wunderbar, Danke für den Tip. Ist wohl n naja "klassischer Anfänger" Fehler? :|
Kaeru Gaman hat geschrieben:@Ractur:
so wie du das grad gemacht hat, ist das keine Art und Weise,
in Zukunft wirst du das Forum anständig benutzen oder deinen Frisör fragen!


Sonst bist Du gesund?
Kaeru Gaman hat geschrieben:@Ractur:
wenn du code postest, dann poste code, den man direkt copy/paste übernehmen kann und der den Fehler zeigt!


Klar ich poste 1000 Zeilen Code wegen diesen kleinen Fehler bzw. wegen diesen Denkfehler meiner Seits, sehr sehr Sinnvoll.
Kaeru Gaman hat geschrieben:@Ractur:
und wenn dir Leute helfen, dann geh gefälligst drauf ein!
:roll: Was ich tuh oder nicht lass ich mir von Dir ganz bestimmt vorschreiben :lol:
Kaeru Gaman hat geschrieben:@Ractur:
wenn du sowieso nicht zuhörst
> Hmm ja, allerdings frag ich mich dann wieso er das in der Hauptschleife dann nicht genauso macht?
dann machs von vorne herein alleine und belämmer das Forum gar nicht erst.


Klar da lachen ja die Hühner, ähm oder passender die Osterhasen :roll:

Verfasst: 12.04.2009 20:04
von Kaeru Gaman
> Klar ich poste 1000 Zeilen Code

also, dann schreib ich's nochmal ganz langsam, damit du mitkommst...

wenn man eine Frage hat zu einem Fehler der im Code auftritt,
dann sollte man ein Beispiel posten, was den Fehler zeigt.

natürlich keine 1000 Zeilen code, aber eben einen Abschnitt, der den Fehler reproduziert.

wie soll man sonst drauf kommen, dass du so trigger-happy warst,
die Global-Deklaration mit in die Proedure zu schreiben?


> Was ich tuh oder nicht lass ich mir von Dir ganz bestimmt vorschreiben

yup, von mir und von jedem anderen Moderator,
solange unser Ansinnen nicht gegen die guten Sitten verstößt,
sondern das alltägliche Forenmiteinander regeln soll.

dazu gehört eben, dass man sich die Antworten der Anderen User,
die ihre Freizeit geopfert haben um über dein Problem nachzudenken,
aufmerksam durchgelesen hat und drüber nachgedacht hat,
und das eine oder andere ausprobiert hat.

wenn man das nicht vorhat, braucht man auch in keinem Forum zu fragen.

sollte eigentlich selbstverständlich und einleuchtend sein,
aber ist anscheinend für manche Leute doch eine größere Herausforderung.

Verfasst: 12.04.2009 20:20
von Ractur
Kaeru Gaman hat geschrieben:> Klar ich poste 1000 Zeilen Code
also, dann schreib ich's nochmal ganz langsam, damit du mitkommst...
wenn man eine Frage hat zu einem Fehler der im Code auftritt,
dann sollte man ein Beispiel posten, was den Fehler zeigt.
Genau das hab ich gemacht, und übrigens fallst Du es noch nicht gemerkt hast: "Der Fehler wurde gefunden" nur weil Du gleich eine C&P Version wünscht um den Fehler zu entdecken muss ich das noch lange nicht so machen. Das steht auch nicht in den Forenregeln! Voti hat den Fehler offensichtlich durch denken entdeckt, hmm woran das wohl liegen mag?
Kaeru Gaman hat geschrieben: yup, von mir und von jedem anderen Moderator,
Das Du Dich Moderator nennst wundert mich, so die Leute anflamen, find ich ziemlich nice :) Meinst Du jetzt kriche ich vor Dir her oder was? Was denkst Du wie schnell ein neuer Nick angelegt ist :lol: Schneller als Du den Fehler in meinen Code findest, oder schneller als Du Copy & Paste sagen kannst.
Kaeru Gaman hat geschrieben: wenn man das nicht vorhat, braucht man auch in keinem Forum zu fragen.


Sag mal, hast Du das in Deiner Zauberkugel gesehen? Es gibt Menschen die weiter arbeiten und es auf einen anderen Weg probieren, wenn es auf Weg 1 nicht geht. Genauso hab ich es gemacht, hab weiter probiert und hatte entgegen meiner Erwartung erfolg, ansonsten hätte ich auch keinen Theard aufgemacht.

So, danke für Deine Belustigung, Thema ist für mich beendet, und wenn Du eben wieder n Theard von mir siehst bist Du gerne dazu eingeladen Ihn nicht anzusehen, danke!

Grüsse und Danke an die, die wirklich versucht haben das Problem zu lösen, Ractur