Types --> Sotieren --> in Datei

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

dominik

Betreff: Types --> Sotieren --> in Datei

BeitragSa, Mai 07, 2005 11:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab bestimmte Daten in Types gespeichert und möchte diese jetzt in eine Datei schreiben.

die Datei sollte dann inhaltlich so aufgebaut sein:
Code: [AUSKLAPPEN]

#
Person
#/
Datum
Inhalt
Inhalt
...
#/
Datum
Inhalt
....
#
Person
#/
Datum
Inhalt
...
usw.

Wobei das # immer eine neue Person ankündigt, und #/ ein neues Datum.
Inhalte können natürlich unbegrentzt sein. Unter einer Person können auch beliebig viele neue Daten an an beliebig vielen verschiedenen DATUMS (#/) geschrieben werden.

Mein speicher code sieht dazu so aus. Der aber leider nicht so funtzt wie er eigentlich sollte. (welch Überraschung)

person_sp$ <--- ist die Person unter der gerade daten geschrieben werden.
datum_sp$ <--- das datum unter der Person
und die *_ge speicher ob die person und das datum schon in die datei geschrieben wurde da ja nicht für jede neue Datenzeile auch jedesmal die Person sowie das datum neue angegeben werden sollen wenn es immernoch die gleichen sind.

BlitzBasic: [AUSKLAPPEN]
Function speichern()
Local person_sp$
Local peron_ge = False
Local datum_sp$
Local darum_ge = False

datei = OpenFile(\"PM.dat\")
For gadget.neu = Each neu
If gadget\daten > \"\" Then

If person_sp$ <= \"\" Then
person_sp$ = gadget\person
Else
If datum_sp$ <= \"\" Then
datum_sp$ = gadget\datum
Else
If gadget\person = person_sp$ Then
If gadget\datum = datum_sp$ Then

If person_ge = False Then
WriteLine datei, \"#\"
WriteLine datei, gadget\person
person_ge = True
EndIf

If datum_ge = False Then
WriteLine datei, \"#/\"
WriteLine datei, gadget\datum
datum_ge = True
EndIf

If person_ge = True And datum_ge = True Then
WriteLine datei, gadget\daten
DebugLog gadget\daten
EndIf

Else
datum_sp$ = gadget\datum
datum_ge = False
EndIf
Else
person_sp$ = gadget\person
person_ge = False
EndIf
EndIf
EndIf

EndIf
Next
CloseFile datei
End Function


Die Ursprungsdatei aus der ich die daten auch vorher schon ausgelesen hab sah so aus:
Code: [AUSKLAPPEN]
dfghfdhfdhfdh
#
Person1
#/
1.1.2001
Hallo das ist die erste Nachrricht von Person 1
#
Person2
#/
1.2.2001
Servus und das ist auch schon die 2. Nachrricht,
aber diesmal von Person 2.
#/
3.1.2001
Und das ist schon die 3. Zeile von Person Nummer 2.
Aber an einem anderen Tag
#
Person3
#/
4.1.2001
Hallo Person 3


und die vom programm beim speichern erstellte so.
Code: [AUSKLAPPEN]
#
Person2
#/
3.1.2001
Aber an einem anderen Tag
t die erste Nachrricht von Person 1
#
Person2
#/
1.2.2001
Servus und das ist auch schon die 2. Nachrricht,
aber diesmal von Person 2.
#/
3.1.2001
Und das ist schon die 3. Zeile von Person Nummer 2.
Aber an einem anderen Tag
#
Person3
#/
4.1.2001
Hallo Person 3


in Zeile 6 fehlt einfach der Anfang, warum ???????
Außerdem fehlt Person1 einfach komplett ?????
BB+ 1.41|Sempron 2.8|geforce fx5200|1GB DDR|XP home SP2 / prof.

dominik

BeitragMo, Mai 09, 2005 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
hab ich mich nicht klar genug ausgerückt was das problem ist, seid ihr einfach nur zu faul den code zu lesen, oder ist meine frage einfach so blöd das sich die mühe einer antwort einfach nicht lohnt ?????
BB+ 1.41|Sempron 2.8|geforce fx5200|1GB DDR|XP home SP2 / prof.
 

hitokiri

BeitragMo, Mai 09, 2005 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
mal ne ganz bescheuerte frage.
du initialisierst zwar die strings aber gibts ihnen überhaupt nichts.
das heisst, sie enthalten nichts, was nicht kleiner "" ist... oder ?
ich meine, der string ist ja in dem sinne ein nullpointer.

dominik

BeitragMo, Mai 09, 2005 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
doch ich denk mal schon oder wie würdest du diese Zeilen interpretieren?
BlitzBasic: [AUSKLAPPEN]
datum_sp$ = gadget\datum
person_sp$ = gadget\person

Das $ muss, wenn es bei der definition von Types angegeben wurde, nich nochmal geschrieben werden.
BB+ 1.41|Sempron 2.8|geforce fx5200|1GB DDR|XP home SP2 / prof.
 

Roseman

BeitragMo, Mai 09, 2005 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Local peron_ge = False   ; Zeile 3
Local darum_ge = False  ; Zeile 5


Code: [AUSKLAPPEN]

If person_ge = False Then ; Zeile ... irgendwo unten
If datum_ge = False Then  ; Zeile ... irgendwo noch weiter unten


Ist mir jetzt beim "studieren" deines Codes aufgefallen.
Hier hast du Variablen deklariert und nutzt sie nicht, bzw ich denke mal ein Tippfehler.

Das zweite was mir übelst aufgestoßen ist ist, daß du deinen Code nicht kommentiert hast. Wie zum Teufel soll man sich bei den ganzen if-, else Abfragen überhaupt nen Überblick erschaffen können?
Kleiner Tipp: Schreibt den Code neu, und benutze für Gadget\daten ein eigenes Type, daß du dann in einer eigenen For Schleife noch mal nach dem Schreiben der person und datum Variablen durchläufst.
Dadurch kannst du dir den ganzen Quatsch mit den True/False Abfragen auch sparen und das Ganze noch mal um ein Vielfaches Kürzen und dadurch übersichtlicher machen.
Außerdem solltest du bei so vielen If Else Kombinationen wirklich wenigstens die wichtigsten Zeilen kommentieren, wenn du schon andere darum bittest, sich den Code mal anzusehen.

Mfg Roseman

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group