Adress-Verwaltung: Type-Datensätze in File speichern
Übersicht

![]() |
GizehBetreff: Adress-Verwaltung: Type-Datensätze in File speichern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ein liebes Hallo an alle ![]() Ich habe da eben ein Problem, und komme seit Stunden einfach nicht weiter - ich glaube, es liegt an einer Wissenslücke meinerseits, die ich in bezug auf die Thematik im Moment leider noch habe. Ich würde mich freuen, wenn mir der eine oder andere Prof eben mal weiter helfen kann, ich grüble seit Stunden und komme auf keine Lösung. Worum geht es? Ich habe eben, als kleine Anfänger-Fingerübung, eine Mini-Adress-Verwaltung geschrieben. Die Datensätze für jede einzelne Person (Name, Nachname, Telefon-Nummer und Anzahl des Eintrages) werden dabei als Type gespeichert. Funktioniert auch bis dahin - nur möchte ich jetzt gerne noch eine dauerhafte Speicher-Funktion einbauen. Nach Eingabe der kompletten Datensätze einer Person (quasi eines Types) soll dieser Personen-Eintrag gleich mal einem externen DB-File zugefügt werden. Ich habe versucht das so zu lösen: (siehe letzter Absatz "DATEI ERZEUGEN / NEUE PERSONEN-DATEN DARIN ANLEGEN " ) Code: [AUSKLAPPEN] ; FUNKTION PERSONEN-DATEN EINGEBEN Function Eingeben() Cls Locate 10,10 ; GLOBALE ZÄHLVARIABLE FÜR EINTRÄGE-GESAMT HOCHZÄHLEN AnzahlPersonen = AnzahlPersonen + 1 ; EINGABE DER NEUEN DATEN eingabeName$ = Input$("Name: ") eingabeName$ = Upper(eingabeName$) Locate 10,20 eingabeNachname$ = Input$("Nachname: ") eingabeNachname$ = Upper(eingabeNachname$) Locate 10,30 eingabeNummer$ = Input$("Telefon: ") ; ANLEGEN EINER NEUEN PERSON NACH STRUKTUR TYPE-PERSON Local persona.Person = New Person Persona\nummer = AnzahlPersonen persona\name = eingabeName$ persona\nachname = eingabeNachname$ persona\telefon = eingabeNummer ; DATEI ERZEUGEN / NEUE PERSONEN-DATEN DARIN ANLEGEN file% = WriteFile("Datenbank.db") WriteInt (file,AnzahlPersonen) WriteInt (file,Persona\nummer) WriteString (file,Persona\name) WriteString (file,Persona\nachname) WriteString (file,Persona\telefon) CloseFile (file) End Function Nun ist es aber so: "Natürlich" (zumindest für die Profis unter Euch) wird nun immer nur EIN Eintrag in das File gespeichert. Das heißt, jeder neue und weitere Eintrag überschreibt den Vorhergehenden - es bleibt quasi immer nur ein einziger (natürlich der letzte zuvor eingegebene), der bei jedem neuen Start der DB eingelesen wird. Toll ![]() Wie kann ich dieses Problem denn beheben? ![]() |
||
- Zuletzt bearbeitet von Gizeh am Mo, Okt 02, 2006 17:06, insgesamt 2-mal bearbeitet
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich bin mir nicht sicher und habe es auch noch nicht ausprobiert, aber probier statt Writefile, Openfile.
Wie gesagt weiss es nicht zu 100% |
||
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Als erstes ist das sinnlos: Code: [AUSKLAPPEN] WriteInt (file,gNumNames) WriteInt (file,Persona\nummer) Nun zum rest: Am besten machst du dir dafür eine Extra Speicher Funktion. Jene geht mit for/each alle Types durch und schreibt sie dann in die Datei. Zum laden das gleiche nur mit lesen. Dann einfach bevor man das Programm beendet einmal die Speicher Funktion aufrufen und nach dem Start die Lade FUnktion und fertig ![]() MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit SeekFile das Ende der Datei suchen und dort anhängen anstatt immer wieder bei 0 reinzuschreiben.
Writefile stimmt schon (OpenFile wäre wertlos) Ich empfehle jedoch nicht ständig Datei auf, Datei zu, ausser es wird effektiv nur sporadisch etwas neues hinzugefügt. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Writefile löscht eine existierende Datei wieder also ist Openfile schon richtig
allerdings musst du vorher testen ob die Datei existiert, Openfile schreibt nur in schon existierende Dateien. Also erzeugen der Datei mit WriteFile und erneutes reinschreiben nach dem schliesen mit Openfile Edit: Wenn du allerdings die Daten beim Aufruf sowieso alle ausliest, kannst du die Datei auch komplett neu mit Writefile schreiben. |
||
antome |
- Zuletzt bearbeitet von antome am Mo, Okt 02, 2006 10:59, insgesamt einmal bearbeitet
HappyCosinus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hm, du könntest das so machen, wenn du unbedingt die datei auf und zu machen willst.. zwar nicht soo optimal, aber egal, du wolltest ja eine lösung für dieses problem.. ich hab das da nur etwas umgestaltet mit writeline, damit das übersichtlich aussieht in der datenbank. solltest du natürlich wegmachen.
viel erfolg noch file% = OpenFile("Datenbank.txt") If file% = 0 Then file%=WriteFile("Datenbank.txt") SeekFile(file%,FileSize("Datenbank.txt")) WriteLine (file,"Kennziffer: "+Persona\nummer) WriteLine (file,"Vorname: "+Persona\name$) WriteLine (file,"Nachname: "+Persona\nachname$) WriteLine (file,"Telefon: "+Persona\telefon) WriteLine (file,"") CloseFile (file) |
||
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So kann er die Datei ohne die Zeile zu parsen nicht mehr in ein Type einlesen | ||
antome |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
da verschafft meine Methode abhilfe ![]() |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Gizeh |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lieben Dank für Eure Antworten! Ich versuche mich jetzt mal an ihnen - wenn´s klappt, gebe ich einen Kaffee aus ![]() Bis nachher ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group