 |
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 |
Alex42
Anmeldungsdatum: 15.02.2007 Beiträge: 6
|
Verfasst am: 15.02.2007, 12:38 Titel: feste Stringlänge - Problem |
|
|
Hallo,
muss mich von Arbeitswegen nun mitt alten Qbasic Programmen rumschlagen, und möchte diese gerne auf FB portieren.
Nun habe ich mit folgendem Programm ein kleines Problem:
Code: |
OPEN "xxx.txt" FOR INPUT AS 9
OPEN "xxx.txt_Var1.txt" FOR OUTPUT AS 1
OPEN "xxx_Var2.txt" FOR OUTPUT AS 2
OPEN "xxx_Var3.txt" FOR OUTPUT AS 3
OPEN "xxx_Var4.txt" FOR OUTPUT AS 4
OPEN "xxx_Var5.txt" FOR OUTPUT AS 5
OPEN "xxxVarianten.txt" For Output as 42
CLS
DIM kzKunde AS STRING * 6
DIM lfdNrA AS STRING * 6
WHILE EOF(9) = 0
LINE INPUT #9, a$
kzKunde$ = MID$(a$, 29, 6)
g = g + 1
LOCATE 5, 5: PRINT "Datensätze gelesen : "; g
IF kzKunde$ = " 1" THEN
v1 = v1 + 1
lfdNrA$ = STR$(v1)
b$ = a$ + lfdNrA$
PRINT #1, b$
LOCATE 7, 5: PRINT "geschrieben Variante 1 : "; v1
ELSEIF kzKunde$ = " 2" THEN
v2 = v2 + 1
lfdNrA$ = STR$(v2)
b$ = a$ + lfdNrA$
PRINT #2, b$
LOCATE 8, 5: PRINT "geschrieben Variante 2 : "; v2
ELSEIF kzKunde$ = " 3" THEN
v3 = v3 + 1
lfdNrA$ = STR$(v3)
b$ = a$ + lfdNrA$
PRINT #3, b$
LOCATE 9, 5: PRINT "geschrieben Variante 3 : "; v3
ELSEIF kzKunde$ = " 4" THEN
v4 = v4 + 1
lfdNrA$ = STR$(v4)
b$ = a$ + lfdNrA$
PRINT #4, b$
LOCATE 10, 5: PRINT "geschrieben Variante 4 : "; v4
ELSEIF kzKunde$ = " 5" THEN
v5 = v5 + 1
lfdNrA$ = STR$(v5)
b$ = a$ + lfdNrA$
PRINT #5, b$
LOCATE 11, 5: PRINT "geschrieben Variante 5 : "; v5
END IF
WEND
LOCATE 5, 5: PRINT #42, "Datensätze gelesen : "; g
LOCATE 7, 5: PRINT #42, "geschrieben Variante 1 : "; v1
LOCATE 8, 5: PRINT #42, "geschrieben Variante 2 : "; v2
LOCATE 9, 5: PRINT #42, "geschrieben Variante 3 : "; v3
LOCATE 10, 5: PRINT #42, "geschrieben Variante 4 : "; v4
LOCATE 11, 5: PRINT #42, "geschrieben Variante 5 : "; v5
ges = v1 + v2 + v3 + v4 + v5
LOCATE 12, 5: PRINT #42, "--------------------------------"
LOCATE 13, 5: PRINT #42, "geschrieben Gesamt : "; ges
CLOSE 9, 1
END
|
Die Problematik ist, das in Qbasic er den String lfdNrA wie am Anfang definiert feste 6 zeichen lang macht und den Wert reinschreibt. In FB tut er das nicht mehr :/ Nur finde ich den Fehler nicht.
Kann mir hier vielleicht jemand auf die Sprünge helfen?
Gruß Alex
Zuletzt bearbeitet von Alex42 am 15.02.2007, 12:49, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 15.02.2007, 12:45 Titel: |
|
|
Hallo und Willkommen hier im Board, Alex!
Als erstes, nich' bös' gemeint, aber Code, gerade wenn er so lang ist, in Codeboxen setzen. Das erhöht die Übersichtlichkeit. (Die Code-Box findest du unter der Box "Titel" als Button.)
Und als nächstes:
was genau funktioniert nicht? Wird in die Variable überhaupt nix reingeschrieben oder kommt irgendeine Fehlermeldung beim Compilieren?
Und: was soll das Programm machen? Wenn wir das wissen, können wir den Fehler auch leichter finden.
Greets,
Mao _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Alex42
Anmeldungsdatum: 15.02.2007 Beiträge: 6
|
Verfasst am: 15.02.2007, 12:53 Titel: |
|
|
erstmal den Post editiert
Ok das Programm soll aus einer größeren Anzahl an Datensätzen eine Sortierung anhand der kzkunde nummer Vornehmen, und die Varianten dann wieder getrennt ausgeben.
Desweiteren dann hinter dem Datensatz im Variantentextfile ein Nummer anfügen, die eine feste Breite hat (bzw in dem Fall eben nicht hat )
Das Programm wird so ohne Fehler ausgeführt nur eben habe ich bei den Varianten Textfiles am Ende keine einheitliche Zeilenlänge sondern abhängig von der stellenzahl der angehängten Nummer mehr oder weniger.
Hoffe das war verständlich geschrieben. Danke schonmal für die schnelle Antwort. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 15.02.2007, 13:37 Titel: Re: feste Stringlänge - Problem |
|
|
Hi,
Alex42 hat Folgendes geschrieben: | Kann mir hier vielleicht jemand auf die Sprünge helfen? | ..kannst du mir mal auf die Sprünge helfen?
Du hast sehr schön beschrieben, wie das aussehen soll..
..imho wäre es einfacher gewesen, eine Zeile zu schreiben, wie es aussehen soll und eine wie es z.Z. aussieht..
z.B. Soll-Aussehen hat Folgendes geschrieben: | Alex42 , Mercedes Clk, 000001
ytwinky, BMW 635 Csi, 000002 | und Ist-Aussehen hat Folgendes geschrieben: | alex42,Mercedes Clk,1
ytwinky,BMW 635 Csi,2 | Machma bitte
Btw:
für einfache Zahlenformatierungen gibt es in FB Print Using..
oder ?Format()..
Schau einfach mal in die Befehlsreferenz oder haste die noch nicht gedownloadet?
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO..
Zuletzt bearbeitet von ytwinky am 15.02.2007, 13:42, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Alex42
Anmeldungsdatum: 15.02.2007 Beiträge: 6
|
Verfasst am: 15.02.2007, 13:41 Titel: |
|
|
kein problem, es schaut derzeit so aus:
"1 "
und ab 10 eben
"10 "
durch das festsetzten des Strings wollte ich folgendes erreichen:
"1 "
"10 "
"100 "
Also immer 6 Zeichen lang! Dadurch hat meine immer gleich lange zeilen, so das ich die Datei dann weiter verarbeiten kann... _________________ Gruß Alex |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 15.02.2007, 13:47 Titel: |
|
|
Na, wenn's weiter nix is: Code: | Nr=1
MaxLen=6
s=Str(Nr)
Print Space(MaxLen-Len(s)) &s |
Sieht aber so aus, als wolltest du die Spaces hinten haben: Code: | ?s &Space(MaxLen-Len(s)) |
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Alex42
Anmeldungsdatum: 15.02.2007 Beiträge: 6
|
Verfasst am: 15.02.2007, 13:54 Titel: |
|
|
Danke, habe glaub ich verstanden was gemeint ist.
Werd das ganze nun mal probieren
Gebe Rückmeldung nachher.... _________________ Gruß Alex |
|
Nach oben |
|
 |
Alex42
Anmeldungsdatum: 15.02.2007 Beiträge: 6
|
Verfasst am: 15.02.2007, 15:41 Titel: |
|
|
So nun hab ich mal etwas rumprobiert:
Die reine Nutzung des Space geht ohne Probleme
zB hinter meine Zeile.
Bei kompletter verwendung:
Code: | ...
F kzKunde$ = " 1" THEN
v1 = v1 + 1
lfdNrA = STR(v1)
b$ = a$ + lfdNrA & Space(6 - LEN(lfdNrA))
PRINT #1, b$
LOCATE 7, 5: PRINT "geschrieben Variante 1 : "; v1
ELSEIF kzKunde$ = " 2" THEN
...
|
jedoch mach er mir wieder keine zusäzlichen Spaces hin (Insgesamt ist es die letzte Zahl+2 Spaces, egal ob die Zahl 2 oder 4 stellig ist ) _________________ Gruß Alex |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Alex42
Anmeldungsdatum: 15.02.2007 Beiträge: 6
|
Verfasst am: 20.02.2007, 16:51 Titel: |
|
|
Hat so leider auch nicht funktioniert, da ich net unbedingt fit im programmieren kann es auch an meiner einbindung ins vorhandene Programm liegen.
Habe es inzwischen mit QB45 durchlaufen lassen.
Trotzdem nochmal vielen Dank für die schnellen Hilfen! _________________ Gruß Alex |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 20.02.2007, 21:56 Titel: |
|
|
Hi Alex42,
ich hoffe ich habe dein Problem richtig verstanden:
du brauchst einfach nur einen 6 Zeichen langen String, indem eine Zahl (v1) rechtbündig eingefügt wird? Code: | Dim lfdNrA As String
Dim v1 As Integer
Screen 18,32
Color &Hffffff, &Hff0000
For v1 = 1 To 200 Step 50
lfdNrA = Right(" " + Str(v1), 6) '<----"6Space"
Print lfdNrA
Next
Sleep
End | wenn nicht... tschuldigung, hab es nicht verstanden!  _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
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.
|
|