PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formatierte Ausgabe von Arrays über RS232



Kosta
03.09.2006, 17:53
Hallo alle zusammen!

Kann mir jemand sagen, wie ich mit BASCOM ein Array formatieren kann (ähnlich den Print format) Befehl für Strings?

Ich habe 3 word Arrays die ich in 3 Spalten jeweils rechtsbündig über die RS232 ausgeben möchte.


For Y = 0 To I Step 1
Print Zeit1a(y) ; Spc(5) ; "µs" ; Spc(10) ; Zeit2a(y) ; " x " ; Ba(y)
Next Y


als Ausgabe bekomme ich folgendes was nicht besonders schön aussieht.



630 µs 1 x 0
1597 µs 3 x 1
631 µs 1 x 0
490 µs 1 x 1
630 µs 1 x 0
1596 µs 3 x 1
632 µs 1 x 0
490 µs 1 x 1
629 µs 1 x 0
1597 µs 3 x 1
632 µs 1 x 0
489 µs 1 x 1


Vielen Dank für eure Hilfe

PicNick
03.09.2006, 19:06
Ich glaub' da gibt's sowas wie "FORMAT" im Bascom, hab' ich aber noch nicht verwendet

Kosta
03.09.2006, 19:39
mit format geht es leider nicht (oder ich bekomme es nicht hin). Format funktionier nur für Strings.

Mein Problem ist eigentlich "nur" dass in der linken Spalte (s.o) verschiedene Werte stehen. Manche dreistellig, manche vierstelling, dadurch stehen die ganzen "µ

Kosta
03.09.2006, 19:49
so, das ganze nochmal weil ich versehntlich auf senden gedrückt habe!!! ](*,) ](*,)

mit format geht es leider nicht (oder ich bekomme es nicht hin). Format funktionier nur für Strings.

Mein Problem ist eigentlich "nur" dass in der linken Spalte (s.o) verschiedene Werte stehen. Manche dreistellig, manche vierstelling, dadurch sind die ganzen "µs" und die ganzen "x" versetzt.

Es wäre doch viel schöner und übersichtlicher, wenn in der linken Spalte die einer, zehner, hunderter und tausender Stellen untereinander stehen würden. Das trifft natürlich auch auf alle anderen Spalten zu.

ähM_Key
03.09.2006, 20:48
Wenn es nur 3 oder 4-stellige sind, dann kannst du ja die Zahl durch 1000 teilen, und wenn der Wert vorm Komma Null ist, dann einfach ein " " einfügen.

repi64
03.09.2006, 20:57
Schau dir sonst noch den "Fusing" Befehl an.
Den habe ich bei solchen Sachen eingesetzt.
Es ging aber eher um bestimmte Stellen ihnter dem Komma

Kosta
03.09.2006, 22:25
Wenn es nur 3 oder 4-stellige sind, dann kannst du ja die Zahl durch 1000 teilen, und wenn der Wert vorm Komma Null ist, dann einfach ein " " einfügen.



Im Beispiel oben sind es nur 3-4 stellige Zahlen, es können aber auch 1 und 2 stellige dadrunter sein. (halt eine "Word" Variable).

------------------------------------------------------------------------------------------

Der "FUSING" Befehl funktioniert leider auch nur mit STRING Variablen.


Es muss doch für BASCOM einen Befehl oder Funktion geben mit der man
eine normale Word Variable maskiert ausgeben kann.
Alle Befehle die ich bis jetzt dazu gefunden habe funktionieren nur mit String Variablen.

Kosta
16.09.2006, 08:42
hat vieleicht noch einer eine Idee!!!???

falerion
16.09.2006, 09:16
Nur eine "per Hand" Idee:

eine if...else Schleife in der Du prüfst, ob die Zahl größer als 10, 100 oder 1000 ist und dann die entsprechende Anzahl an Leerzeichen einfügen.

Millenniumpilot
16.09.2006, 12:25
Hallo,

na dann wandelt doch einfach um!

Zeit = Str(t)
Lcd Format(zeit , " ")

usw.

Dirk

lumilux
16.09.2006, 18:59
Hallo,

hast du schon mal den TAB-BEFEHL zwischen den Ausgaben ausprobiert.

...;CHR(9);...;CHR(9);...

MfG Frank