Daten aus Datei in Programm laden und verändern/erweitern
Übersicht

![]() |
MoM007Betreff: Daten aus Datei in Programm laden und verändern/erweitern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, ich hab schon wieder ein Problem, dass wohl recht simpel zu lösen ist.
ich habe ein Adressbuch prgrammiert, in das können Adressen eingegeben werden können, diese werden auch in einer Datei gespeichert. Genau diese Datei will ich zur weiterbearbeitung bei einem erneuten Programmstart hineinladen und dann weiter mit Adressen fütter. Ich habe nur die Probleme, dass die neuen Daten die alten überschreiben würden und dass ich die dateien nicht in das Adreebuch geladen bekomme. danke in Vorraus MfG MoM007 PS: bitte steinigt mich nicht weil ich so viele Gosub(2) und Goto(2) hab Code: [AUSKLAPPEN] AppTitle "Adressbuch"
Graphics 800, 600, 0, 2 Dim address$(100,6) Repeat .back Cls Locate 1, 1 Print "1 - Adresse eingeben" Print "2 - Adresse abfragen" Print "3 - Adressen speichern" Print "4 - Ende" Print " " vote = Input$("Bitte wählen: ") Cls Locate 1, 1 ; hier sollte eine Ladefunktion stehen Select vote Case 1 index = index + 1 address$(index,0) = Input("Telefonnummer: ") address$(index,1) = Input("Vorname: ") address$(index,2) = Input("Nachname: ") address$(index,3) = Input("Straße und Hausnr.: ") address$(index,4) = Input("Wohnort: ") address$(index,5) = Input("Land: ") address$(index,6) = Input("E-Mail Adresse: ") Case 2 found = 0 search$ = Input$("Nachname eingeben: ") For I=1 To index If address$(I,2) = search$ Then Print address$(I,1) + " " + address$(I,2) Print "- " + address$(I,0) Print "- " + address$(I,3) Print "- " + address$(I,4) Print "- " + address$(I,5) Print "- " + address$(I,6) found = 1 EndIf Next If found = 0 Then Print "Kein Eintrag gefunden" Case 3 f = WriteFile("otext.txt") For I = 0 To 100 For J = 0 To 6 WriteLine f, address$(I,J) Next Next CloseFile f Print "done!" Case 4 .bla Cls Locate 1, 1 Print "Möchten Sie das Adressbuch speichern oder die vorgenommenen Einträge verwerfen?" Print "" Print "1 - speichern" Print "2 - verwerfen" Print "3 - zurück" Print "" vote2% = Input$("Ihre Wahl: ") If vote2% = 1 Then Gosub save If vote2% = 2 Then End If vote2% = 3 Then Goto back If vote2% <> 1 Or vote2% <> 2 Then Print "Ungültige Wahl!" Goto bla Case 5 Gosub rread Default Print "Ungültige Wahl" End Select Print "Taste drücken" WaitKey Forever ;--------------SUB-------------- .save f = WriteFile("otext.txt") For I = 0 To 100 For J = 0 To 6 WriteLine f, address$(I,J) Next Next CloseFile f Print "done!" WaitKey End Return .rread Repeat For R = 0 To 6 f = ReadFile("otest.txt") address(I,J) = ReadLine$(f) CloseFile f Next index = index+1 Until Eof(f) Or index=100 Return |
||
AMD XP 2800+, 9600 256RAM, 1GB RAM, WIN XP PRO |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier ist schon ein Fehler...
Code: [AUSKLAPPEN] Repeat
For R = 0 To 6 f = ReadFile("otest.txt") address(I,J) = ReadLine$(f) CloseFile f Next index = index+1 Until Eof(f) Or index=100 Es wird immer nur die erste Zeile der Datei ausgelesen! Besser ist ... Code: [AUSKLAPPEN] Repeat
f = ReadFile("otest.txt") For R = 0 To 6 address(I,J) = ReadLine$(f) Next CloseFile f index = index+1 Until Eof(f) Or index=100 Damit wird schon mal der komplette Block eingelesen! Allerdings wird nun immer nur der erste ausgelesen da die datei ja immer wieder neu geöffnet wird! Einfacher ist es die komplette Datei einzulesen und bei neu hinzugefügten diese alle wieder zu speichern! Für solche Daten eignen sich Types am besten! |
||
[BB2D | BB3D | BB+]
|
![]() |
MoM007 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danek für die Tips, werds mal versuchen.
Die types hat mir schon ein anderer vorgeschlagen, ich versteh die aber nicht so ganz, muss wohl wieder das buch rausholen... MfG MoM007 |
||
AMD XP 2800+, 9600 256RAM, 1GB RAM, WIN XP PRO |
![]() |
MoM007 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe mal eine Lösung für mein Problem geschrieben
Man muss vorher allerdings eine Datei "otext.txt" estellen Code: [AUSKLAPPEN] AppTitle "Adressbuch"
Graphics 800, 600, 2, 2 Dim address$(100,6) Dim bezeichnung$(6) Global index=0 Const nachname=0 Const vorname=1 Const telefon=2 Const strasse=3 Const ort=4 Const land=5 Const email=6 bezeichnung (nachname)="Nachname" bezeichnung (vorname)="Vorname" bezeichnung (telefon)="Telefon" bezeichnung (strasse)="Straße und Hausnummer" bezeichnung (ort)="Wohnort" bezeichnung (land)="Land" bezeichnung (email)="E-Mail Adresse" Const selEnter=1 Const selShow=2 Const selSave=3 Const reload=4 Const deleteall=5 Const selExit=6 ReadAll() Repeat Cls Locate 1, 1 Print "1 - Adresse eingeben" Print "2 - Adresse abfragen" Print "3 - Adressen speichern" Print "4 - Änderungen mit Speicherung überschreiben" Print "5 - Alle Adressen löschen" Print "6 - Ende" vote = Input$("Bitte wählen: ") Cls: Locate 1,1 Select vote Case selEnter Print "Adresse Nr. "+index+":" ;nachname eingeben address$(index,nachname) = Input("Nachname (kein Eintrag=abbrechen): ") ;restliche adresse eingeben If address$(index,nachname)<>"" Then For i=vorname To email address$(index,i) = Input(bezeichnung(i)+": ") Next index = index + 1 somethingChanged=1 EndIf ;Adresse suchen Case selShow search$ = Input$("Nachname eingeben: ") For I=0 To 100 If Lower(address$(I,nachname)) = Lower(search$) Then ;Lower: Groß- und Kleinschreibung egal ;adresse gefunden ShowAddress (i) Print "Press a key to continue" Goto found EndIf Next ;adresse nicht gefunden Print "Kein Eintrag gefunden" .found FlushKeys() : WaitKey ;Adressen speichern Case selSave SaveAll SomethingChanged=0 ;Adressen neu laden Case reload ReadAll() ;address() löschen Case deleteall index=0 For i=0 To 6 address$(0,i)=0 Next somethingChanged=1 ;beenden Case selExit Cls: Locate 1, 1 If somethingChanged=0 Then End Print "Möchten Sie das Adressbuch speichern oder die vorgenommenen Einträge verwerfen?" Print "1 - alles speichern" Print "2 - Änderungen verwerfen" Print "sonst: abbrechen (zurück)" vote2% = Input$("Ihre Wahl: ") Select vote2 Case 1: SaveAll: End Case 2: End End Select Default Print "Ungültige Wahl" End Select Forever ; FUNCTIONS Function SaveAll() f=WriteFile("otext.txt") WriteLine f, index-1 For I = 0 To index-1 For J = 0 To 6 WriteLine f, address$(I,J) Next Next CloseFile f End Function Function ReadAll() f=ReadFile ("otext.txt") If f=0 Then ;DATEI NICHT VORHANDEN Print "Datei nicht gefunden! Press a key to continue" FlushKeys() : WaitKey Else index=ReadLine (f) For i=0 To index For j=0 To 6 ;FEHLER IN DATEI If Eof(f) Then Print "Datei 'otext.txt' fehlerhaft. Adressen konnten nicht geladen werden." FlushKeys(): WaitKey EndIf address$(i,j)=ReadLine(f) Next Next index=index+1 EndIf End Function Function ShowAddress(index) Cls Print "Adresse von " + address$(index,vorname) + " " + address$(index,nachname)+":" For i=telefon To email Print bezeichnung(i)+": " + address$(index,i) Next End Function |
||
AMD XP 2800+, 9600 256RAM, 1GB RAM, WIN XP PRO |
![]() |
Hip Teen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Man muss vorher allerdings eine Datei "otext.txt" estellen
Dafür kann man einfach einen einfachen Code vor dem laden hängen. Einfach in der Funktion "ReadAll" nach der Zeile Code: [AUSKLAPPEN] f=ReadFile ("otext.txt")
noch folgendes ranhängen: Code: [AUSKLAPPEN] If f = 0 Then
f = WriteFile ("otext.txt") End If Schon muss die Datei nicht existieren ![]() |
||
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger" |
![]() |
MoM007 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Stimmt, aber es geht mir nicht darum, wollte nur sagen, dass es sonst nicht gehen kann, aber die Idee ist gut | ||
AMD XP 2800+, 9600 256RAM, 1GB RAM, WIN XP PRO |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group