Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
AIN
Anmeldungsdatum: 03.03.2010 Beiträge: 16
|
Verfasst am: 10.03.2010, 01:28 Titel: Semikolon anstelle vom Komma |
|
|
Enstschuldigen Sie bitte, ich habe klein Problem mit der Ablegedatei... Ich brauche Semikolon anstelle von Komma, z.B:
Code: |
dim shared as string$ jx
dim shared as single a1,a2,a3
a1=15
a2=17
a3=2180
jx="d:\data.dat"
open jx for output as #1
write #1,a1,a2,a3
close #1
end
|
Hier ist die Ablegedatai so:
15,17,2180
Aber ich brauche eher diese Format:
15;17;2180
Es gibt einfach eine Lösungweg?
Vielen Dank im voraus!  |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
AIN
Anmeldungsdatum: 03.03.2010 Beiträge: 16
|
Verfasst am: 10.03.2010, 02:01 Titel: |
|
|
Hallo Sebastian!
Danke schön! Das ist ganau! (That is exactly what I've been thinking!)
P.S.
Und noch, wenn möchte ich z.B. STRING$ Variable, sind dort die Anführungszeichen... Das ist nich gut... Ich brauche ohne Anführungszeichen (if you know what I mean)
z.B:
Code: |
dim shared as string$ jx
dim shared as string$ a
a="test"
jx="d:\data.dat"
open jx for output as #1
write #1,a
close #1
end
|
Und die Ablegedatai ist:
"test"
Und besser Format für mich ist:
test
Es geht?
Danke! |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 10.03.2010, 02:12 Titel: |
|
|
PRINT statt WRITE verwenden. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
AIN
Anmeldungsdatum: 03.03.2010 Beiträge: 16
|
Verfasst am: 10.03.2010, 02:17 Titel: |
|
|
Oh, danke danke schön!
Bin ich aber ein Pfuscher!  |
|
Nach oben |
|
 |
AIN
Anmeldungsdatum: 03.03.2010 Beiträge: 16
|
Verfasst am: 15.03.2010, 19:36 Titel: Re: Semikolon anstelle vom Komma |
|
|
Sebastian hat Folgendes geschrieben: | Hallo,
so sollte es funktionieren:
Code: |
dim shared as string jx
dim shared as single a1,a2,a3
a1=15
a2=17
a3=2180
jx="d:\data.dat"
open jx for output as #1
print #1, ltrim(str(a1)); ";"; ltrim(str(a2)); ";"; ltrim(str(a3))
close #1
end
|
Viele Grüße!
Sebastian |
OK, aber jetzt: wenn ich will LOAD into computer, soll ich "rtrim" statt "ltrim" machen? Das aber nicht funktioniert...
Code: |
dim shared as string jx
dim shared as single a1,a2,a3
a1=15
a2=17
a3=2180
jx="d:\data.dat"
open jx for input as #1
print #1, rtrim(str(a1)); ";"; rtrim(str(a2)); ";"; rtrim(str(a3))
close #1
end
|
Danke!  |
|
Nach oben |
|
 |
HorstD
Anmeldungsdatum: 01.11.2007 Beiträge: 110
|
Verfasst am: 15.03.2010, 19:51 Titel: |
|
|
Code: |
DIM SHARED AS STRING jx
DIM SHARED AS SINGLE a1, a2, a3
DIM t AS STRING
jx = "d:\DATA.dat"
OPEN jx FOR INPUT AS #1
LINE INPUT #1, t
PRINT t
CLOSE #1
|
|
|
Nach oben |
|
 |
AIN
Anmeldungsdatum: 03.03.2010 Beiträge: 16
|
Verfasst am: 15.03.2010, 20:40 Titel: |
|
|
HorstD hat Folgendes geschrieben: | Code: |
DIM SHARED AS STRING jx
DIM SHARED AS SINGLE a1, a2, a3
DIM t AS STRING
jx = "d:\DATA.dat"
OPEN jx FOR INPUT AS #1
LINE INPUT #1, t
PRINT t
CLOSE #1
|
|
Thanks a lot!
Aber ich möchte wieder LOAD die Datei (genau) from this CODE:
Code: |
DIM SHARED AS STRING jx
DIM SHARED AS SINGLE a1,a2,a3
a1=15
a2=17
a3=2180
jx="d:\DATA.dat"
OPEN jx FOR OUTPUT AS #1
PRINT #1, LTRIM(STR(a1)); ";"; LTRIM(STR(a2)); ";"; LTRIM(STR(a3))
CLOSE #1
END
|
Die Datei sind: 15;17;2180
Und ich möchte LOAD into computer wieder a1,a2,a3 d.i. a1=15, a2=17, a3=2180
Ich weiss nicht, ob ich alles richtig zu erklären...  |
|
Nach oben |
|
 |
Muttonhead

Anmeldungsdatum: 26.08.2008 Beiträge: 566 Wohnort: Jüterbog
|
Verfasst am: 15.03.2010, 21:11 Titel: |
|
|
@AIN: Warum Semikolon in deiner Ablegedatei?? Ist das wirklich notwendig?  |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
|
Nach oben |
|
 |
AIN
Anmeldungsdatum: 03.03.2010 Beiträge: 16
|
Verfasst am: 15.03.2010, 21:34 Titel: |
|
|
Muttonhead hat Folgendes geschrieben: | @AIN: Warum Semikolon in deiner Ablegedatei?? Ist das wirklich notwendig?  |
Ja, leider, in Ablegedatei muss ich die Semikolon haben. Und - umegekehrt - ich brauche die Nummer wieder LOAD into computer  |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
isiprimax
Anmeldungsdatum: 02.01.2009 Beiträge: 77
|
Verfasst am: 15.03.2010, 21:54 Titel: |
|
|
Ich fände es einfacher wen die Zahlen so aufgebaut wären
15;17;2180;
Weil dann müsstest du nur mit einer IF-Anweisung und der MID-Function die ";" Lokalisieren und die Zahl davor in eine Variable bringen. Wobei da ein Array besser wäre. also ein a(1), a(2), a(3) usw... |
|
Nach oben |
|
 |
AIN
Anmeldungsdatum: 03.03.2010 Beiträge: 16
|
Verfasst am: 15.03.2010, 21:56 Titel: |
|
|
Sebastian hat Folgendes geschrieben: | Hallo,
CSV-Datensätze mit Semikolon als Trennzeichen können nicht direkt mit FreeBASIC-eigenen Befehlen in Variablen eingelesen werden. INPUT funktioniert in dem Zusammenhang nur mit Kommas, also mit Daten, wie sie von WRITE erzeugt werden.
Wenn du die Daten mit den Semikolons wieder einlesen möchtest, musst du die Feldwerte mit Stringmanipulationsfunktionen extrahieren. Vorgefertigte Routinen dazu findest du z.B. in einem Code-Beispiel zur Handhabung von CSV-Dateien.
Viele Grüße!
Sebastian |
Vielen Dank!!  |
|
Nach oben |
|
 |
AIN
Anmeldungsdatum: 03.03.2010 Beiträge: 16
|
Verfasst am: 15.03.2010, 23:18 Titel: |
|
|
isiprimax hat Folgendes geschrieben: | Ich fände es einfacher wen die Zahlen so aufgebaut wären
15;17;2180;
Weil dann müsstest du nur mit einer IF-Anweisung und der MID-Function die ";" Lokalisieren und die Zahl davor in eine Variable bringen. Wobei da ein Array besser wäre. also ein a(1), a(2), a(3) usw... |
Hallo isiprimax!
Diese Lösung schon es kam mir den Sinn! Oder ist auch möglich read ganze Angabe (to string$) und dann stufeweise parzellieren - und mit Hilfe VAL konvertieren.
Danke sehr!  |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 15.03.2010, 23:32 Titel: |
|
|
Du musst halt mit INSTR das nächste vorkommende Trennzeichen suchen. Links davon steht der nächste Wert, rechts eine Zeichenkette die weiter zerlegt werden muss.
Code: | do
aktuelleZahl = val(eingabe)
trenn = instr(eingabe, ";")
if trenn = 0 then exit do
eingabe = mid(eingabe, trenn+1)
loop |
Ist nur die Zerlegung; die Speicherung der Werte in Variablen muss natürlich noch gemacht werden. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Muttonhead

Anmeldungsdatum: 26.08.2008 Beiträge: 566 Wohnort: Jüterbog
|
Verfasst am: 16.03.2010, 20:37 Titel: |
|
|
...mal in Anlehnung an nemored's Beispiel:
Code: |
dim as string test
declare function GetFirstValue(s as string) as single
test="3;5.7;99;5;100;-.098;Blaa;ZickeZacke;3.4568;;"
do
print GetFirstValue(test)
loop until len(test)=0
sleep
end
function GetFirstValue(s as string) as single
dim as integer cut,lenstr
function=0
lenstr=len(s)
if lenstr>0 then
function=val(s)
cut=instr(s,";")
if cut>0 then
s=right(s,lenstr-cut)
else
s=""
end if
end if
end function
|
 |
|
Nach oben |
|
 |
|