Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

feste Stringlänge - Problem

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Alex42



Anmeldungsdatum: 15.02.2007
Beiträge: 6

BeitragVerfasst am: 15.02.2007, 12:38    Titel: feste Stringlänge - Problem Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 15.02.2007, 12:45    Titel: Antworten mit Zitat

Hallo und Willkommen hier im Board, Alex! lächeln

Als erstes, nich' bös' gemeint, aber Code, gerade wenn er so lang ist, in Codeboxen setzen. Das erhöht die Übersichtlichkeit. Ja! (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. zwinkern

Greets,
Mao
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Alex42



Anmeldungsdatum: 15.02.2007
Beiträge: 6

BeitragVerfasst am: 15.02.2007, 12:53    Titel: Antworten mit Zitat

erstmal den Post editiert zwinkern

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 traurig )

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
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 15.02.2007, 13:37    Titel: Re: feste Stringlänge - Problem Antworten mit Zitat

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 zwinkern
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? happy
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Alex42



Anmeldungsdatum: 15.02.2007
Beiträge: 6

BeitragVerfasst am: 15.02.2007, 13:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 15.02.2007, 13:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Alex42



Anmeldungsdatum: 15.02.2007
Beiträge: 6

BeitragVerfasst am: 15.02.2007, 13:54    Titel: Antworten mit Zitat

Danke, habe glaub ich verstanden was gemeint ist.

Werd das ganze nun mal probieren zwinkern

Gebe Rückmeldung nachher....
_________________
Gruß Alex
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Alex42



Anmeldungsdatum: 15.02.2007
Beiträge: 6

BeitragVerfasst am: 15.02.2007, 15:41    Titel: Antworten mit Zitat

So nun hab ich mal etwas rumprobiert:

Die reine Nutzung des Space geht ohne Probleme
Code:
Space(6)
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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 15.02.2007, 17:18    Titel: Antworten mit Zitat

Hallo,

wie wär's hiermit:
Code:
zahl% = 123
MitSpaces$ = LTRIM$(STR$(zahl%)) + STRING$(LEN(LTRIM$(STR$(zahl%))), " ")
PRINT CHR$(34); MitSpaces$; CHR$(34)
SLEEP: END


Wenn die Routine häufiger gebraucht wird, kannst du dir auch eine FUNCTION daraus machen.

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Alex42



Anmeldungsdatum: 15.02.2007
Beiträge: 6

BeitragVerfasst am: 20.02.2007, 16:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 20.02.2007, 21:56    Titel: Antworten mit Zitat

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! verlegen
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz