Array Index out of Bounds!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Ede

Betreff: Array Index out of Bounds!

BeitragMi, Okt 25, 2006 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi erstmal, ich bin neu hier im Forum und relativ neu in BB,

also wie schon gesagt, kommt bei mir die fehlermeldung "array index...".
es geht um einen teil von einem programm das in dem fall das datum automatisch korrigiert bzw anpasst. normal sollte soweit alles klappen, tuts aber nich und ich komm auch nimmer weiter deshalb hab ich hier den code, komlett auskommentiert!

PS: Das soll später aus TextAreas ausgelesen werden, also nicht(!) zuerst als .dat oder .txt gespeichert werden... WIE DAS? und falls wer ne lösung mit types hat: umso besser! aber bitte nur als ergänzung weil das hab ich auch noch nicht so wirklich drauf... Laughing
ede

Code: [AUSKLAPPEN]

file=WriteFile("c:/pillemann.dat"); erstellt die datei die späterausgelesen ;wird...
WriteLine file,"1.6"; schreibt den das datum rein... 
;alternativ:
;WriteLine file,"01.06.2006"
;WriteLine file,"1.6.06" usw.
CloseFile file

stream=ReadFile("c:/pillemann.dat")

Const char_limit=20; hab hier ne konstante gewählt, damit ich die zahl ;nicht überall extra verändern muss
Dim char$(char_limit); ich glaub so oder so ähnlich sehn auch die strings in ;C aus, wo jedes Zeichen ein array Feld bekommt und so solls hier auch ;werden...
Dim date$(2) ;tt/mm/jj ... date$(0)=Tag/date$(1)=Monat/date$(2)=Jahr

For i=0 To char_limit

readt=ReadByte(stream);liest zuerst alle 20 Zeichen aus, es sei denn die ;Schleife wird vorher beendet
If readt<>Asc(Chr$(13)) Then;bei einem Zeilenumbruch (mit Chr$(13) eingeleitet) wird die schleife beendet
char$(i)=Chr$(readt);Speichert jedes Zeichen in einem anderen Feld
Else
Exit;ende d. schleife bei zeilenumbruch
EndIf

Next

For i=0 To char_limit;arbeietet alle char(i) ab!
If char$(i)="" Then Exit; wenn char="" (siehe oben, if readt<>asc...),

While char$(i)<>"." And char$(i)<>",";während das Zeichen weder ein ;Punkt noch ein Komma ist...
date$(v)=date$(v)+char$(i);... wird ins aktuelle Datumsfeld geschrieben, ;also t/m/j
i=i+1;i um 1 erhöhen da die for-next schleife ja nicht durchlaufen wurde ;und man trotzdem mit dem nächsten i arbeiten will.
Wend ;wenn das nächste datumsfeld beginnt also nach Punkt/Komma

Print "Datumsfeld "+Str$(v+1)+": "+date$(v);nur zur überprüfung: wert ;des aktuellen damtumsfeldes wird auf dem Bildschirm ausgegeben
v=v+1; nach dem beenden der while schleife muss ins nächste datumsfeld ;geschrieben werden...
Next

WaitKey()

CloseFile stream
End

Rone

BeitragMi, Okt 25, 2006 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
moin,

der Debugger zeigt doch sogar die Zeile:

While i<20 And char$(i)<>"." And char$(i)<>","
date$(v)=date$(v)+char$(i)
i=i+1
Wend

mfg
 

Ede

BeitragMi, Okt 25, 2006 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
ok danke rone werds direkt mal probieren...

PS: das mit den semikolons is auch n bisschen in die hose geggangen...
die tauchen mal hier mal da auf, bloß nich wo man sie haben will... Mad

bis denne Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group