Das einlesen mehrerer Type Koordinaten...
Übersicht

Blitzkrieg BopBetreff: Das einlesen mehrerer Type Koordinaten... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute!
Ich hab mal wieder ne (vielleicht sogar Allgemeine) Frage: Wenn bei einem Programm meinetwegen Kreise erstellt werden, so hat ja jeder Kreis eine eigene X,Y Koordinate. Man kann ja diese Koordinaten abspeichern. Doch wie schafft man es, die X und Y Koordinaten richtig einzulesen, so dass halt die Kreise,wenn man aus einer Datei lädt, auch an den richtigen Stellen gezeichnet werden? Ich habe mal einen Code gebastelt, wodurch meine Frage klar wird und ich frage euch, was man bei der Funktion Laden() machen kann...Ich hab shcon einiges durchgetestet. Also mal eben kopieren und ausprobieren ![]() ![]() Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer() SeedRnd MilliSecs() AppTitle "Das laden mehrerer Type Koordinaten?!" Type kreis Field x,y End Type Repeat Cls Text 0,0,"Drücke Enter um 10 neue Kreise zu erstellen!" Text 0,30,"Drücke S um zu speichern!" Text 0,60,"Drück L um zu laden!" For k.kreis = Each kreis Oval k\x,k\y,10,10 Next If KeyHit(28) For i = 1 To 10 k.kreis = New kreis k\x = Rand(20,780) k\y = Rand(20,580) Next EndIf If KeyHit(31) Then Speichern() ; 31:S If KeyHit(38) Then Laden() ;38:L Flip Until KeyHit(1):End Function Speichern() file = WriteFile("Koord's.txt") For k.kreis = Each kreis WriteLine file,k\x WriteLine file,k\y Next CloseFile file End Function Function Laden() ;wie kann man das realisieren... End Function MFG Bop |
||
~ Hey Ho Let's Go ~ |
Silbersurfer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du hast doch schon den Writeline genutzt, einfach dan das gegenstück
davon Readline z.b so Code: [AUSKLAPPEN] Function Laden()
file = ReadFile("Koord's.txt") For i = 1 To 10 k.kreis = New kreis k\x = ReadLine (file) k\y = ReadLine (file) Next CloseFile file natürlich noch verfeinern z.B vorher abfragen wie viele einträge u.s.w gruss Silbersurfer |
||
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD Hompage : http://home.arcor.de/silbersurfer01/ Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip |
sdjh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Function Laden() file = ReadFile("Koord's.txt") if file repeat k.kreis = New kreis k\x = ReadLine (file) k\y = ReadLine (file) until eof(file) CloseFile file return 1 else retun 0 endif end function verfeinert 8) Now features: - volle Datei ^^ - Abfangroutine ^^ |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
wobei eure Laderoutinen,wenn später im Programm genutzt, das geladene an evtl. im Speicher befindliche Kreise anhängen.
Willst Du das vermeiden musst du sämtliche Types die schon existieren vorher löschen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Function Laden()
Korrigiert. Sonst wird eine Zeile zuviel ausgelesen. (Die ja eigentlich gar nicht existiert) file = ReadFile("Koord's.txt") if file While Not Eof(file) ; Erst prüfen, dann auslesen k.kreis = New kreis k\x = ReadLine (file) k\y = ReadLine (file) Wend CloseFile file return 1 else retun 0 endif end function ![]() Weitermachen ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jo, danke an alle, für die vielen Vorschläge ![]() Ich hab es auch prompt hinbekommen! Warum das vorher nicht ging, weiß ich nicht ![]() Also, hier die fertige Datei und gleichzeitig noch ne Frage an Hubsi, ist es eigentlich unbedingt notwenig das man Eof mit einbezieht - ich hab es nicht ohne Versucht, weil mir die überprüfung sinnvoll erscheint - aber sollte man das immer nutzen? Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer() SeedRnd MilliSecs() AppTitle "Das laden mehrerer Type Koordinaten?!" Type kreis Field x,y End Type Repeat Cls Text 0,0,"Drücke Enter um 10 neue Kreise zu erstellen!" Text 0,30,"Drücke S um zu speichern!" Text 0,60,"Drück L um zu laden!" For k.kreis = Each kreis Oval k\x,k\y,10,10 Next If KeyHit(28) For i = 1 To 10 k.kreis = New kreis k\x = Rand(20,780) k\y = Rand(20,580) Next EndIf If KeyHit(31) Then Speichern() ; 31:S If KeyHit(38) Then Laden() ;38:L Flip Until KeyHit(1):End Function Speichern() file = WriteFile("Koord's.txt") For k.kreis = Each kreis WriteLine file,k\x WriteLine file,k\y Next CloseFile file End Function Function Laden() ;wie kann man das realisieren... file = ReadFile("Koord's.txt") If file While Not Eof(file) k.kreis = New kreis k\x = ReadLine(file) k\y = ReadLine(file) Wend CloseFile file EndIf End Function |
||
~ Hey Ho Let's Go ~ |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du mußt natürlich nicht wenn Du die Anzahl der Einträge kennst. Da aber Types verwendet werden bin ich einfach mal davon ausgegangen das das nicht der Fall ist ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hm...jo, klar stimmt schon! Naja, ich hab aber noch eine Frage...
Und zwar geht es bei meinem Type-Test darum, das 2 Types geladen werden und das macht Stress. Es werden einmal Kreise geladen, aber da wo die Kreise sind, sind auch Essen'Symbole. Oder manchmal ist alles durcheinander...Hier der Code vom laden und speichern...kann man doch sicher vrbessern oder?^^ Code: [AUSKLAPPEN] Function Speichern() file = WriteFile("Data.txt") For k.kreis = Each kreis WriteLine file,k\x WriteLine file,k\y WriteLine file,k\breite WriteLine file,k\hoehe WriteLine file,k\tile Next For e.essen = Each essen WriteLine file,e\x WriteLine file,e\y WriteLine file,e\breite WriteLine file,e\hoehe WriteLine file,e\tile Next CloseFile file End Function Function Laden() file = ReadFile("Data.txt") If file While Not Eof(file) k.kreis = New kreis k\x = ReadLine(file) k\y = ReadLine(file) k\breite =ReadLine(file) k\hoehe = ReadLine(file) k\tile = ReadLine(file) e.essen = New essen e\x = ReadLine(file) e\y = ReadLine(file) e\breite = ReadLine(file) e\hoehe = ReadLine(file) e\tile = ReadLine(file) Wend CloseFile file EndIf End Function |
||
~ Hey Ho Let's Go ~ |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würd das mit einer Trennzeile lösen:
Code: [AUSKLAPPEN] Function Speichern()
Ist jetzt nur Pseudo, glaube aber alles bedacht zu haben file = WriteFile("Data.txt") For k.kreis = Each kreis WriteLine file,k\x WriteLine file,k\y WriteLine file,k\breite WriteLine file,k\hoehe WriteLine file,k\tile Next WriteLine file,"Next Block" ; ergänzt For e.essen = Each essen WriteLine file,e\x WriteLine file,e\y WriteLine file,e\breite WriteLine file,e\hoehe WriteLine file,e\tile Next CloseFile file End Function Function Laden() file = ReadFile("Data.txt") If file While Not Eof(file) And trash$<>"Next Block" ; erweitert trash$=ReadLine(file) ; ergänzt If trash$<>"Next Block" ; ergänzt k.kreis = New kreis k\x = trash ; geändert k\y = ReadLine(file) k\breite =ReadLine(file) k\hoehe = ReadLine(file) k\tile = ReadLine(file) Wend ; ergänzt While Not Eof(file) ; ergänzt e.essen = New essen e\x = ReadLine(file) e\y = ReadLine(file) e\breite = ReadLine(file) e\hoehe = ReadLine(file) e\tile = ReadLine(file) Wend CloseFile file EndIf End Function ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm....also dein Code war an sich richtig, außer du hast ein Endif vergessen , in der ersten While/Wend Schleife. Aber dennoch klappt das nicht...Wenn ich jetzt Kreise male und Essen, malt der beim Laden gar kein Essen mehr , sondern anstatt das Essen Kreise... ![]() Code: [AUSKLAPPEN] Function Speichern() file = WriteFile("Data.txt") For k.kreis = Each kreis WriteLine file,k\x WriteLine file,k\y WriteLine file,k\breite WriteLine file,k\hoehe WriteLine file,k\tile Next WriteLine file,"Nächster Type Block" For e.essen = Each essen WriteLine file,e\x WriteLine file,e\y WriteLine file,e\breite WriteLine file,e\hoehe WriteLine file,e\tile Next CloseFile file End Function Function Laden() file = ReadFile("Data.txt") If file While Not Eof(file) And trash$ <> "Nächster Type Block" trash$= ReadLine(file) If trash$<>"Nächster Type Block" k.kreis = New kreis k\x = ReadLine(file) k\y = ReadLine(file) k\breite =ReadLine(file) k\hoehe = ReadLine(file) k\tile = ReadLine(file) EndIf Wend While Not Eof(file) e.essen = New essen e\x = ReadLine(file) e\y = ReadLine(file) e\breite = ReadLine(file) e\hoehe = ReadLine(file) e\tile = ReadLine(file) Wend CloseFile file EndIf End Function |
||
~ Hey Ho Let's Go ~ |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast auch diese Zeile nochmal verändert:Code: [AUSKLAPPEN] k\x = ReadLine(file) Wenn die zurück-geändert ![]() k\x = trash sollte es funzen, denke ich ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmpf....so hab ich es jetzt:
Code: [AUSKLAPPEN] Function Laden() file = ReadFile("Data.txt") If file While Not Eof(file) And trash$ <> "Nächster Type Block" trash$= ReadLine(file) If trash$<>"Nächster Type Block" k.kreis = New kreis k\x = trash$ k\y = ReadLine(file) k\breite =ReadLine(file) k\hoehe = ReadLine(file) k\tile = ReadLine(file) EndIf Wend While Not Eof(file) e.essen = New essen e\x = ReadLine(file) e\y = ReadLine(file) e\breite = ReadLine(file) e\hoehe = ReadLine(file) e\tile = ReadLine(file) Wend CloseFile file EndIf End Function Aber Anstatt dem Essen malt der auch Kreise. Sonst geht das.... ![]() ![]() Und wenn ich e\x = trash$ schreibe, tritt dennoch der slebe Fehler auf ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich kann keinen Fehler entdecken. Deine Zeichenroutine arbeitet fehlerfrei? Hast Du die Datei schon mit einem Texteditor geöffnet und nach 'Nächster Type Block' Ausschau gehalten? | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
OKay! Also nach deiner Anweisung mal darauf zu gucken habe ich folgenden Test gemacht:
Ich habe 5 Kreise gemalt und 5 Essen. Für jeden Kreis gilt, das er 5 Werte zugewiesen bekommt. Also müssten in der Textdatei zunächst 5*5 = 25 Werte stehen, dann "Nächster Type Block" und dann wieder 5*5 = 25 Werte (diesmals für das Essen) stehen. Genauso ist es ![]() Ich habe auch noch andere Zahlenverhältnisse getestet und es kommt alles hin. Also beim speichern liegt der Fehler nicht , denke ich. Mein Problem ist ja, das alles Wunderbar klappt, solange man Kreise malt. Doch wenn man Essen malt, so malt der anstatt das Essen auch einen Kreis. Angenommen ich male Essen mit den Daten: Code: [AUSKLAPPEN] e\x = 5 e\y = 10 e\breite = 10 e\hoehe = 10 e\tile = 1 dann malt der kein Essen sondern einen Kries mit den koordinaten ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aber beim erstellen (also vor jeglichem Laden/Speichern) wird noch alles richtig gezeichnet? Das einzige was mir jetzt noch einfällt ist, das evtl. die falsche Tilenummer (k\tile u. e\tile) angegeben wird, sofern das damit zusammenhängen kann. | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hm...ich denke sowas ähnliches...naja, bin erstmal noch bei nem Termin und heut abend progge ich den Editor um, ohne e\tile und k\tile... | ||
~ Hey Ho Let's Go ~ |
![]() |
Gossi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du wissen willst, ob es am Laden liegt, speichere alle Werte unmittelbar nach dem Laden nochmal in eine neue Datei. Dann schau dir die Datei an, ob sie richtig geladen wurde. | ||
Alle Wasser laufen ins Meer, doch wird das Meer nicht voller; an den Ort, dahin sie fließen, fließen sie immer wieder. (...) Was geschehen ist, eben das wird hernach sein. Was man getan hat, eben das tut man hernach wieder, und es geschieht nichts neues unter der Sonne. Geschieht etwas, von dem man sagen könnte: "Sieh, das ist neu"? Es ist längst vorher auch geschehen in den Zeiten, die vor uns gewesen sind. |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Guten Morgen!
Also, ich bin am verzweifeln... Ich habe mich heute morgen rangesetzt und meine kleine Spielerei komplett neu gecodet, doch es tritt der gleiche Fehler auf: Kreise können ohne Probs gemalt/geladen werden. Aber wenn ich essen male, kommt total das Durcheinander auf - auch wenn ich nur essen male, lädt der Kreise ![]() Also hier nochmal der Code: Würde mich eventuell freuen wenn ich jemandem mal alles geben kann damit man halt alle kontrollieren kann, denn ich weiß nicht mehr weiter. Code: [AUSKLAPPEN] Function Speichern() file = WriteFile("Data.txt") For k.kreis = Each kreis WriteLine file,k\x WriteLine file,k\y WriteLine file,k\breite WriteLine file,k\hoehe Next WriteLine file,"Nächster Block" For e.essen = Each essen WriteLine file,e\x WriteLine file,e\y WriteLine file,e\breite WriteLine file,e\hoehe WriteLine file,e\farbe Next CloseFile file End Function Function Laden() file = ReadFile("Data.txt") If file While Not Eof(file) And trash$ <> "Nächster Block" trash$ = ReadLine(file) If trash$ <> "Nächster Block" k.kreis = New kreis k\x = trash$ k\y = ReadLine(file) k\breite = ReadLine(file) k\hoehe = ReadLine(file) EndIf Wend While Not Eof(file) e.essen = New essen e\x = ReadLine(file) e\y = ReadLine(file) e\breite = ReadLine(file) e\hoehe = ReadLine(file) e\farbe = ReadLine(file) Wend CloseFile file EndIf End Function ![]() |
||
~ Hey Ho Let's Go ~ |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group