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:

Semikolon anstelle vom Komma

 
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
AIN



Anmeldungsdatum: 03.03.2010
Beiträge: 16

BeitragVerfasst am: 10.03.2010, 01:28    Titel: Semikolon anstelle vom Komma Antworten mit Zitat

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! zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 10.03.2010, 01:36    Titel: Re: Semikolon anstelle vom Komma Antworten mit Zitat

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
_________________

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
AIN



Anmeldungsdatum: 03.03.2010
Beiträge: 16

BeitragVerfasst am: 10.03.2010, 02:01    Titel: Antworten mit Zitat

Hallo Sebastian!
Danke schön! zwinkern 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? mit den Augen rollen
Danke!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 10.03.2010, 02:12    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 03.03.2010
Beiträge: 16

BeitragVerfasst am: 10.03.2010, 02:17    Titel: Antworten mit Zitat

Oh, danke danke schön! zwinkern
Bin ich aber ein Pfuscher! lachen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AIN



Anmeldungsdatum: 03.03.2010
Beiträge: 16

BeitragVerfasst am: 15.03.2010, 19:36    Titel: Re: Semikolon anstelle vom Komma Antworten mit Zitat

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


mit dem Kopf durch die Mauer wollen

Danke! zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
HorstD



Anmeldungsdatum: 01.11.2007
Beiträge: 110

BeitragVerfasst am: 15.03.2010, 19:51    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 03.03.2010
Beiträge: 16

BeitragVerfasst am: 15.03.2010, 20:40    Titel: Antworten mit Zitat

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! zwinkern

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... mit den Augen rollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 566
Wohnort: Jüterbog

BeitragVerfasst am: 15.03.2010, 21:11    Titel: Antworten mit Zitat

@AIN: Warum Semikolon in deiner Ablegedatei?? Ist das wirklich notwendig? cool
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 15.03.2010, 21:30    Titel: Antworten mit Zitat

@AIN:
Here is a english freebasic forum, maybe thats easier for us all, and especially for you.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AIN



Anmeldungsdatum: 03.03.2010
Beiträge: 16

BeitragVerfasst am: 15.03.2010, 21:34    Titel: Antworten mit Zitat

Muttonhead hat Folgendes geschrieben:
@AIN: Warum Semikolon in deiner Ablegedatei?? Ist das wirklich notwendig? cool


Ja, leider, in Ablegedatei muss ich die Semikolon haben. Und - umegekehrt - ich brauche die Nummer wieder LOAD into computer missbilligen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 15.03.2010, 21:47    Titel: Antworten mit Zitat

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
_________________

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
isiprimax



Anmeldungsdatum: 02.01.2009
Beiträge: 77

BeitragVerfasst am: 15.03.2010, 21:54    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 03.03.2010
Beiträge: 16

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

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!! zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AIN



Anmeldungsdatum: 03.03.2010
Beiträge: 16

BeitragVerfasst am: 15.03.2010, 23:18    Titel: Antworten mit Zitat

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! zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 15.03.2010, 23:32    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 26.08.2008
Beiträge: 566
Wohnort: Jüterbog

BeitragVerfasst am: 16.03.2010, 20:37    Titel: Antworten mit Zitat

...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

grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
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