 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
chregu
Anmeldungsdatum: 15.12.2006 Beiträge: 2 Wohnort: Huttwil/Schweiz
|
Verfasst am: 15.12.2006, 02:29 Titel: Problem mit Datenfeldern |
|
|
Hallo Leute,
mich plagt ein Problem, es ist spät und ich blick nicht mehr durch . Bei einem Scheduler, dessen Code folgendes enthält:
Code: | PRINT #1, VAL(einsch$(anzsch%)) |
bekomme ich auf dem Host-Rechner die richtige Ausgabe. Alle Variablen haben richtige und gültige Werte. Auf dem Ziel-System, einem MS-DOS Mini-PC http://www.taskit.de/produkte/minipc/index.htm bekomme ich plötzlich immer nur Null zurück (Variable "anzsch%" hat zum Beispiel "1"). Wenn ich allerdings folgendes ausprobiere:
Code: | PRINT #1, VAL(einsch$(1)) |
geht es plötzlich auch.
Aber das ist natürlich nicht befriedigend. Weiss jemand, woran das liegen kann? geDIMt habe ich natürlich. Oder kann ich das irgendwie zerlegen, damit ich keine Datenfelder brauche oder so...?
Danke und Gruss Chregu |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 15.12.2006, 18:35 Titel: |
|
|
Datenfelder sind immer besser als Variablen
aber dein problem ist schon....seltsam.
vlt solltest du einfach mal DIM statt suffix verwenden, also
DIM anzsch as integer
statt
anzsch%
vielleicht hilft das ja!
es köntne auch helfen, den wert, der ausgegeben werden soll, erst in einer variable zwischenzuspeichern und diese dann per print auszugeben.
btw: verwendest du auf beiden system das gleiche BASIC? _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
chregu
Anmeldungsdatum: 15.12.2006 Beiträge: 2 Wohnort: Huttwil/Schweiz
|
Verfasst am: 15.12.2006, 23:59 Titel: |
|
|
Hallo Jojo,
Zitat: | btw: verwendest du auf beiden system das gleiche BASIC? |
Ja, aber ich habe den Code auf dem Host-Rechner bis jetzt nur mit "Ausführen/Start" laufengelassen, und auf dem Ziel-Rechner mit der .exe Datei. Habe jetzt aber gerade auf Beidem das .exe ausprobiert, und das läuft auf dem Host-Rechner.
Darf ich mal den ganzen Code posten (Auszug mit dem Wichtigen):
Code: | wert% = 0
i% = 0
OPEN "schalten.txt" FOR INPUT AS #3 'Datei mit Zeiten oeffnen
DIM kanal%(1 TO 100)
DIM einsch$(1 TO 100)
DIM aussch$(1 TO 100)
LINE INPUT #3, dummy$
WHILE NOT EOF(3)
i% = i% + 1
INPUT #3, kanal%(i%), einsch$(i%), aussch$(i%)
WEND
CLOSE #3
WHILE INKEY$ = ""
datum$ = DATE$
zeit$ = TIME$
GOSUB weekday
aktzeit$ = LTRIM$(RTRIM$(STR$(weekday%))) + MID$(zeit$, 1, 2) + MID$(zeit$, 4, 2) + MID$(zeit$, 7, 2)
PRINT #1, esc$ + "TH";
PRINT #1, aktzeit$
FOR anzsch% = 1 TO i%
IF VAL(RIGHT$(aktzeit$, LEN(einsch$(anzsch%)))) >= VAL(einsch$(anzsch%)) AND VAL(RIGHT$(aktzeit$, LEN(aussch$(anzsch%)))) < VAL(ausch$(anzsch%)) THEN
wert% = wert% OR 1
ELSE
wert% = wert% AND 254
END IF
PRINT #1, CHR$(10)
PRINT #1, anzsch%
NEXT anzsch%
OUT PioA%, wert%
PRINT #1, CHR$(10)
PRINT #1, VAL(RIGHT$(aktzeit$, LEN(einsch$(anzsch%))))
PRINT #1, CHR$(10)
anzsch% = 2
PRINT #1, einsch$(anzsch%)
PRINT #1, CHR$(10)
PRINT #1, LEN(einsch$(anzsch%))
WHILE zeit$ = TIME$
WEND
WEND |
Ich habe hier ziemlich am Schluss der Variablen anzsch% manuell den Wert 2 zugewiesen, dann funktionierts! Die Zeile gleich darunter gibt - nichts aus! darum bekomme ich dann immer 0 wenn ich mit VAL oder LEN drüber gehe. Also übernimmt anzsch% irgendwie nicht richtig aus der FOR ... NEXT Schleife. Die Schleife funktioniert sauber. i% übernimmt es sauber aus der Zeilenzahl in der Datei.
Gruss Chregu |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|