Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ebrady
Anmeldungsdatum: 06.07.2005 Beiträge: 45
|
Verfasst am: 06.07.2005, 16:07 Titel: Problem mit OPEN und STR$ |
|
|
Hallo!
Mit folgenden Programmzeilen gibt's Probleme:
string$ = STR$(123)
OPEN string$ AS i%
-> Datei nicht gefunden
Ich versteh das irgendwie nicht so ganz.
Ich meine wenn ich string$ mit
string$ = "123"
deklariere, geht's doch auch!
Oder bin ich wie so oft einfach wieder nur zu blöd und hab was ganz einfaches übersehen? |
|
Nach oben |
|
 |
Tobber

Anmeldungsdatum: 01.07.2005 Beiträge: 62 Wohnort: Freudenstadt
|
Verfasst am: 06.07.2005, 16:28 Titel: |
|
|
Hallo ebrady !
Also ich kann schon garnicht "string$=str$(123)" als Programmzeile in QB abschließen, ohne das eine Fehlermeldung kommt. Wie hast Du das gemacht ? Oder war die Variable string$ nur zur Veranschaulichung ? Denn string$ ist ein eigener Befehl und kann nicht als Variable benutzt werden.
Versuch's doch mal so:
dateiname$=ltrim$(str$(123))
open dateiname$ for [] as []
Wenn Du Dateiname$ for [Input] öffnest und sie nicht existiert, wird sie auch nicht gefunden. Anderst bei for [Output]. _________________ "Es wurde schon alles gesagt, nur noch nicht von jedem !" |
|
Nach oben |
|
 |
ebrady
Anmeldungsdatum: 06.07.2005 Beiträge: 45
|
Verfasst am: 06.07.2005, 16:51 Titel: |
|
|
Mit LTRIM$ funzt das. Danke!
Aber wieso schafft STR$ denn Leerzeichen? |
|
Nach oben |
|
 |
Tobber

Anmeldungsdatum: 01.07.2005 Beiträge: 62 Wohnort: Freudenstadt
|
Verfasst am: 06.07.2005, 16:54 Titel: |
|
|
Das weiß ich auch erst seit Neuestem: Anscheinend wird dort ein Platz für das Minuszeichen freigehalten, falls der Wert negativ ist. Hab's noch nicht überprüft, aber wäre logisch nachvollziehbar. _________________ "Es wurde schon alles gesagt, nur noch nicht von jedem !" |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 06.07.2005, 19:11 Titel: |
|
|
stimmt, oder eventuell auch noch für einen Punkt (Komma) bei float-datentypen (single, double) _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 06.07.2005, 21:55 Titel: |
|
|
Und die Leerstellen füllt QB mit CHR$(0) aus, und das ist ja im Dateinamen nicht erlaubt, wie
übrigens auch alle anderen Steuerzeichen (ASCII 0-31).
jb |
|
Nach oben |
|
 |
Tobber

Anmeldungsdatum: 01.07.2005 Beiträge: 62 Wohnort: Freudenstadt
|
Verfasst am: 06.07.2005, 21:58 Titel: |
|
|
Ist für QB CHR$(0) denn gleichbedeutend mit einem Leerzeichen (CHR$(32)) ? _________________ "Es wurde schon alles gesagt, nur noch nicht von jedem !" |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 06.07.2005, 22:01 Titel: |
|
|
Eben nicht! CHR$(0) ist wirklich leer, CHR$(32) ist ein Zeichen.
jb |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 06.07.2005, 22:03 Titel: |
|
|
Wird aber beides von LTRIM$ und RTRIM$ erfasst. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Tobber

Anmeldungsdatum: 01.07.2005 Beiträge: 62 Wohnort: Freudenstadt
|
Verfasst am: 06.07.2005, 22:04 Titel: |
|
|
Stopstopstop. Jetzt komm ich ein bißchen durcheinander. Also ltrim$ macht chr$(0) als Vorzeichen-Platzhalter weg. Wie meinst Du das, das beides erfaßt wird ?  _________________ "Es wurde schon alles gesagt, nur noch nicht von jedem !"
Zuletzt bearbeitet von Tobber am 06.07.2005, 22:07, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 06.07.2005, 22:05 Titel: |
|
|
Nee, auch nicht.
Wenn du mir nicht glaubst:
Bei
Code: |
PRINT LEN(LTRIM$(RTRIM$(CHR$(0))))
|
kommt 1 raus
jb |
|
Nach oben |
|
 |
Tobber

Anmeldungsdatum: 01.07.2005 Beiträge: 62 Wohnort: Freudenstadt
|
Verfasst am: 06.07.2005, 22:14 Titel: |
|
|
Jetzt habe ich meinen Glauben komplett verloren... Du hast doch eben noch gesagt
jb hat Folgendes geschrieben: | Eben nicht! CHR$(0) ist wirklich leer, CHR$(32) ist ein Zeichen.
jb |
aber in Deinem Beispiel hat CHR$(0) eine Länge. Ist also ein Zeichen. Oder ?
OK. Die Fragen beantworten sich bei näherem hingucken von selbst. Sorry.
Also CHR$(0) hat zwar eine Länge von 1, ist aber kein Zeichen, wird aber von ltrim$ und rtrim$ erfaßt. Gibt es ein Beispiel, wo rtrim$ für diesen Fall notwendig wird ? _________________ "Es wurde schon alles gesagt, nur noch nicht von jedem !" |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 06.07.2005, 22:20 Titel: |
|
|
Dann schreib halt
Code: |
t$ = "HALLO!" + CHR$(0)
CLS
PRINT LEN(RTRIM$(LTRIM$(t$)))
|
Da kommt immer noch 7 raus. Und da "HALLO!" 6 Buchstaben hat, kann man sich ja wohl denken, wo
das eine Zeichen herkommt.
Fazit: RTRIM$() und LTRIM$() kürzen also CHR$(0) nicht weg.
/EDIT: Ich hab Müll erzählt. Der Platzhalter für das Minuszeichen ist ein simples
Leerzeichen, wird daher auch von LTRIM$() weggekürzt.
CHR$(0) kann nicht von LTRIM$() oder RTRIM$() weggekürzt werden, was mein obiger Code ja zeigt.
Soo, alle Klarheiten beseitigt ?
jb |
|
Nach oben |
|
 |
Tobber

Anmeldungsdatum: 01.07.2005 Beiträge: 62 Wohnort: Freudenstadt
|
Verfasst am: 06.07.2005, 22:30 Titel: |
|
|
 _________________ "Es wurde schon alles gesagt, nur noch nicht von jedem !"
Zuletzt bearbeitet von Tobber am 06.07.2005, 22:41, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Tobber

Anmeldungsdatum: 01.07.2005 Beiträge: 62 Wohnort: Freudenstadt
|
Verfasst am: 06.07.2005, 22:40 Titel: |
|
|
Sonnenklar jetzt alles. Dankeschön ! _________________ "Es wurde schon alles gesagt, nur noch nicht von jedem !"
Zuletzt bearbeitet von Tobber am 06.07.2005, 22:42, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 06.07.2005, 22:41 Titel: |
|
|
Guckstdu was ich oben geschreibselt habe:
Zitat: |
Der Platzhalter für das Minuszeichen ist ein simples
Leerzeichen, wird daher auch von LTRIM$() weggekürzt.
|
Hier noch mal eine Funktion, um dir zu zeigen, wie in etwa LTRIM$() funktioniert:
Code: |
FUNCTION TRIM$(Ausdruck$, Zeichen$)
tmp$ = ""
FOR i = 1 TO LEN(Ausdruck$)
IF MID$(Ausdruck$, i, 1) <> Zeichen$ THEN tmp$ = tmp$ + MID$(Ausdruck$, i, 1)
NEXT i
TRIM$ = tmp$
END FUNCTION
|
Diese Funktion kürzt das Zeichen Zeichen$ komplett aus dem String.
Als Anwendungsbeispiel:
Code: |
CLS
PRINT TRIM$("Dieser Text wird komplett ohne Leerzeichen ausgegeben!", " ")
PRINT
PRINT TRIM$("Und dieser Text komplett ohne e's", "e")
|
Die Ausgabe wäre dann
Code: |
DieserTextwirdkomplettohneLeerzeichenausgegeben!
Und disr Txt kompltt ohn 's
|
Alles klar?
/EDIT: HRRRR, jetzt hab ich mir umsonst die Finger wund getipselt
Nein, kein Problem, freut mich, wenn du's verstanden hast
jb |
|
Nach oben |
|
 |
Tobber

Anmeldungsdatum: 01.07.2005 Beiträge: 62 Wohnort: Freudenstadt
|
Verfasst am: 06.07.2005, 22:44 Titel: |
|
|
EDIT, EDIT, EDIT...
U DIT IT !!! Hast Dich aber in's Zeug gelegt. Wow. Merci !
 _________________ "Es wurde schon alles gesagt, nur noch nicht von jedem !" |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 06.07.2005, 22:46 Titel: |
|
|
Danke schön
jb |
|
Nach oben |
|
 |
|