[Erledigt] Zähler in Procedure?

Anfängerfragen zum Programmieren mit PureBasic.
Ractur
Beiträge: 128
Registriert: 24.06.2008 11:51

[Erledigt] Zähler in Procedure?

Beitrag 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...
Zuletzt geändert von Ractur am 12.04.2009 19:48, insgesamt 1-mal geändert.
Ractur, der mit dem Programmierstil der 80er Jahre :D
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Re: Zähler in Procedure?

Beitrag 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.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag 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.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Ractur
Beiträge: 128
Registriert: 24.06.2008 11:51

Re: Zähler in Procedure?

Beitrag 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
Ractur, der mit dem Programmierstil der 80er Jahre :D
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag 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.
Zuletzt geändert von jojo1541 am 12.04.2009 13:25, insgesamt 1-mal geändert.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Ractur
Beiträge: 128
Registriert: 24.06.2008 11:51

Beitrag 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:
Ractur, der mit dem Programmierstil der 80er Jahre :D
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Ractur
Beiträge: 128
Registriert: 24.06.2008 11:51

Beitrag 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
Ractur, der mit dem Programmierstil der 80er Jahre :D
Antworten