arrays in functionen resizen..

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

da_poller

Betreff: arrays in functionen resizen..

BeitragFr, Jun 13, 2008 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
wie mach ich das richtig ein array in ner funktion ne neue größe zuzuweisen?

wäre dieser codeschnipsel ok so?


Code: [AUSKLAPPEN]

Dim wkztab(1,2)

Function initWKZ()
   wkztabelle=OpenFile("data\tools.wkz")
   While Not Eof(wkztabelle)
      x=x+1
   Wend
   Dim wkztab(x,2)
   While Not Eof(wkztabelle)
      tempstream$=ReadLine$(wkztabelle)
      p1=Instr(tempstream$,";")
      tempID=Mid(tempstream$,p1-1)
      p2=Instr(tempstream$,";",p1+1)
      tempname$=Mid(tempstream,p1+1,p2-p1-1)
      tempradius$=Right(tempstream$,Len(tempstream)-p2)
      wkztab(tempid,1)=tempname$
      wkztab(tempid,2)=tepmradius
   Wend   
End Function
 

DjDETE

BeitragFr, Jun 13, 2008 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Geht doch, warum sollte es dann falsch sein?
MfG DjDETE
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.

ShadowJumper

BeitragFr, Jun 13, 2008 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
nur, wenn die Datei leer ist, denn:Code: [AUSKLAPPEN]
While Not Eof(wkztabelle)
    x=x+1
Wend

sollte der Zeiger, der die aktuelle Leseposition in der Datei angibt nicht von Anfang an am Ende stehen, so wird diese Schleife unendlich lang ausgeführt

das Dimensionieren müsste so funktionieren (denk ich mal)
den restlichen Code hab ich mir nicht angeguckt...
Bilder kostenlos hosten
lest und weint:
RAM - 512 MB; GrafikRAM - 32 MB; CPU - 800 MHz
Ps: ... und weint (vor lachen)
 

DjDETE

BeitragFr, Jun 13, 2008 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke es geht hier hauptsächlich um das dim(x,2) in der Funktion?
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.
 

da_poller

BeitragFr, Jun 13, 2008 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
jop
genau.. weil ich hab mal gemeint wo gelesen zu haben das es eig nicht geht aber bei mir funktioniert es so

noch was.. ich durchlaufe die datei am anfang um die zeilenzahl festzulegen...

wo steht der lesezeiger in der 2ten schlefie dann? muss ich den evtl neu positionieren..

kann es im moment nicht testen da ich auf die werkzeugliste warten muss bis ich montag na rechner kann um die zu senden..
 

DjDETE

BeitragFr, Jun 13, 2008 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Er springt nach dem auslesen immer eins weiter.
->1. Zeile Position 1
->2. Zeile Position 2

jeweils vor dem auslesen

bzw. wenn du die zweite schleife meinst: anzahl schleifendurchläufe+x
glaub ich
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.
 

da_poller

BeitragFr, Jun 13, 2008 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
erste schleife läuft bis dateiende und steht dann folglich wieder am dateianfang oder lieg ich da falsch=?

Eingeproggt

BeitragFr, Jun 13, 2008 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
sollte der Zeiger, der die aktuelle Leseposition in der Datei angibt nicht von Anfang an am Ende stehen, so wird diese Schleife unendlich lang ausgeführt


Zitat:
Er springt nach dem auslesen immer eins weiter.


--> So wie du es derzeit hast, wird der Lesezeiger immer dort sein, wo er vor der Schleife war, weil du in der Schleife nichts ausliest. Das ist mit den obigen zitaten gemeint. Da die Datei frisch geöffnet wurde, wird der Pointer auf 0 sein (Dateianfang)

mfG, Christoph.
 

DjDETE

BeitragFr, Jun 13, 2008 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Stimmt das habe ich nicht bedacht... Embarassed
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.
 

da_poller

BeitragFr, Jun 13, 2008 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
soo ich hab jetzt auch was ausgelesen(nur nen temp stream) um mal die funktion des ganzen zu überprüfen will ich mir5 auch den datensatz anzeigen..

hier mein code:
Code: [AUSKLAPPEN]
Dim wkztab$(1,1)
;Include "bootfunctions.bb"
Global x=0

;initWKZ()

wkztabelle=OpenFile("data\tools.wkz")
While Not Eof(wkztabelle)
   temp$=ReadLine(wkztabelle)
   x=x+1
Wend
SeekFile(wkztabelle,0)
Dim wkztab$(x,2)
While Not Eof(wkztabelle)
   tempstream$=ReadLine$(wkztabelle)
   p1=Instr(tempstream$,";")
   tempID=Mid(tempstream$,p1-1)
   p2=Instr(tempstream$,";",p1+1)
   tempname$=Mid(tempstream,p1+1,p2-p1-1)
   tempradius#=Right(tempstream$,Len(tempstream)-p2)
   wkztab$(tempID,1)=tempname$
   wkztab$(tempID,2)=tepmradius#
Wend   


Print "x ist: "+x

For l= 1 To x
   Print [b]l[/b]+";"+wkztab$([b]l[/b],1)+";"+wkztab$([b]l[/b],2)+"!"
Next

Print "fertig ausgelesen"

WaitKey()
End


und hier der inhalt der datei:
Code: [AUSKLAPPEN]
1;A;12.88
2;BWWF;5.85
3;CE;2.74
4;DR;1.24
5;EBR;0.99
6;FGDD;3.01
7;GT;1.49
8;ME;9.98
9;HWE;8.99
10;IWER;7.99
11;K;6.00
12;J;5.99
13;LWER;4.99
14;DG;3.99
15;SE;2.99
16;VGZRF;1.99
17;DTZJG;8.11
18;FDH;4.22
19;DF;3.15


aber irgendwie bekomme ich als ausgabe das:

Zitat:

x ist: 19
19;;!
19;;!
...
19;;!
fertig ausgelesen


irgendwie scheint in dem array keine daten vorhanden zu sein..

wei0ß zufällig jmnd wo der fehler CA liegt..?


so den fehler hab ich nun beim durchlesen des forum thread gefunden aber nun bekomme ich komische ausgaben die nicht im geringsten mit dem was in der datei steht zusammen passen... und ab 10 ist das array wieder mal leer..

ps die änderung ist im code farbig markiert..[/b]

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group