Linked List in Editorgadget auslesen
Linked List in Editorgadget auslesen
Hallo!
Ich habe gerade mein erstes Programm, ein "Textadventure" fertig gekriegt. Eigentlich eher beta Status. Dabei habe ich auch versucht daten aus einer LinkedList vom Typ String in ein Editorgadget auszulesen Was ich auch versucht habe, es hat nicht geklappt. Weder die Hilfe, noch das Codearchiv haben etwas zu diesem Thema Hilfreiches geboten. Nun meine kurze und knappe Frage wie mache ich das?
Ich habe gerade mein erstes Programm, ein "Textadventure" fertig gekriegt. Eigentlich eher beta Status. Dabei habe ich auch versucht daten aus einer LinkedList vom Typ String in ein Editorgadget auszulesen Was ich auch versucht habe, es hat nicht geklappt. Weder die Hilfe, noch das Codearchiv haben etwas zu diesem Thema Hilfreiches geboten. Nun meine kurze und knappe Frage wie mache ich das?
- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
In der regel gilt: mit einem Code bzw. dem entscheidenden Codeschnipsel kann man besser verstehen und helfen was dein Problem is...
Aber ich nehme an du willst Daten aus einer LinkedList in einem Editorgadget anzeigen, woran hakts denn?
In der Regel sollte das hier funktionieren
(Ungetestet)
Aber ich nehme an du willst Daten aus einer LinkedList in einem Editorgadget anzeigen, woran hakts denn?
In der Regel sollte das hier funktionieren
Code: Alles auswählen
ForEach LinkedList()
AddGadgetItem(EditorGadgetID,1,LinkedList())
Next
(\/) (°,,,°) (\/)
mit -1 klappt's besser. Dann wird der neu hinzuzufügende EintragKeyKon hat geschrieben:Code: Alles auswählen
AddGadgetItem(EditorGadgetID,1,LinkedList())
automatisch an das Ende der ItemList des EditorGadgets gehängt:
Code: Alles auswählen
AddGadgetItem(EditorGadgetID,-1,LinkedList())
a²+b²=mc²
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
@KeyKon
wird dann nicht alles in die erste zeile gepackt?
naja fals jede element in einer anderen zeile soll sieht das ganze so aus...
[edit]
okay kiffi's wariante geht auch^^ er war auch etwas schneller als ich xD
wird dann nicht alles in die erste zeile gepackt?
naja fals jede element in einer anderen zeile soll sieht das ganze so aus...
Code: Alles auswählen
EditorGadget(0, x, y, Breite, Hoehe)
ForEach LinkedList()
AddGadgetItem(0,ListIndex(LinkedList()) ,LinkedList() )
Next
[edit]
okay kiffi's wariante geht auch^^ er war auch etwas schneller als ich xD

Ächz
Wie schnell das geht
!
Ich sollte wohl etwas weiter ausholen. In die LinkedList vom Typ string wird mit den ReadfileBefehl(Eof(0)usw. Bsp. aus der Hilfe! eine Datei vom Typ Text eingelesen. Das auslesen in das Editorgadget soll auf einen Schlag oder Zeilenweise geschehen. Auf welche Weise es geht oder welche besser ist weiß ich nicht. Jedenfalls war das Höchste was ich erreichte das das Ende der Textdatei (ein paar Wörter zu sehen war). Aber auch nur weil ich mit den Memorybefehlen zusätzlich jedes Element extra einen Speicherbuffer zuwies.
Direkt hat das nie geklappt. Pro Element der Liste eine Textdatei. Mit Code kann ich leider nicht mehr dienen, da ich schon alles geändert habe. Der Tip mit der EditorgadgetID müsste eigentlich helfen. Aber wenn man statt der Linked List Selectelement angibt klappt das dann überhaupt?
Jedenfalls vielen Dank für die schnellen Antworten.




Ich sollte wohl etwas weiter ausholen. In die LinkedList vom Typ string wird mit den ReadfileBefehl(Eof(0)usw. Bsp. aus der Hilfe! eine Datei vom Typ Text eingelesen. Das auslesen in das Editorgadget soll auf einen Schlag oder Zeilenweise geschehen. Auf welche Weise es geht oder welche besser ist weiß ich nicht. Jedenfalls war das Höchste was ich erreichte das das Ende der Textdatei (ein paar Wörter zu sehen war). Aber auch nur weil ich mit den Memorybefehlen zusätzlich jedes Element extra einen Speicherbuffer zuwies.
Direkt hat das nie geklappt. Pro Element der Liste eine Textdatei. Mit Code kann ich leider nicht mehr dienen, da ich schon alles geändert habe. Der Tip mit der EditorgadgetID müsste eigentlich helfen. Aber wenn man statt der Linked List Selectelement angibt klappt das dann überhaupt?
Jedenfalls vielen Dank für die schnellen Antworten.
- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
Hab das "-" verschwitzt^^Magix-Soft <Kain> hat geschrieben:@KeyKon: wird dann nicht alles in die erste zeile gepackt?
@vimike:
Mit SelectElement() wählst du nur ein Element aus, liest es aber nicht aus...
Um den Inhalt zu übergeben musst du eigentlich nur den namen der LinkedList mit den () hintendran nehmen...
Moment ich hab da ein Codebeispiel irgendwo auf der Platte was genau das macht was du willst (glaube ich)
(\/) (°,,,°) (\/)
Erkenntnis
Ich glaube ich muß Selectelement vor dem Addgadgetitem mit dem Listindex oder Linkedlist angeben. Jedenfalls habe ich gerade in der Hilfe bei dem Befehl Listindex etwas ähnliches gefunden. Werde mich in den nächsten Tagen hinsetzen und alles nochmal versuchen und dann den Code in diesem Thread posten wenn alles klappt. Damit wie ich hoffe andere daraus ihren Nutzen ziehen können.
- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
Code: Alles auswählen
Enumeration
#Gad_Editor
EndEnumeration
NewList Text.s()
If OpenWindow(0,0,0,640,480,"FileDisplay",#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget) And CreateGadgetList(WindowID(0))
EditorGadget(#Gad_Editor,10,10,620,460)
file$ = OpenFileRequester("Textdatei auswählen!","","Textdateien|*.txt;*.ini",0)
;File in Liste:
If ReadFile(0,file$) = 0
End
EndIf
While Eof(0) = 0 ;Solange das Ende des Files nicht erreicht ist
AddElement(Text()) ;Neues Elemt erstellen
Text() = ReadString(0) ;Zeile aus dem File ins Element schreiben
Wend
CloseFile(0)
;List zum Editorgadget:
ForEach Text() ;Für jedes Element von der Liste
AddGadgetItem(#Gad_Editor,-1,Text()) ;Aus der Liste in eine Neue Zeile schreiben
Next
;Fertig
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case #Gad_Editor
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Vll hab ich aber auch falsch verstanden was du machen willst...
Wenn du Fragen zum Code hast, frag^^
(\/) (°,,,°) (\/)
Ausprobiert
Hier erst mal der Code:
NewList Test.s()
For V= 0 To 9
AddElement(Test())
If ReadFile(63,"C:\Dokumente und Einstellungen\Administrator\Desktop\nTextadventure\TW2\T"+Str(V)+".txt")
While Eof(63)= 0
C$=ReadString(63)
Test()=C$
Wend
CloseFile(63)
EndIf
Next
If OpenWindow(0,100,100,640,480,"Test",#PB_Window_SystemMenu)
WindowID=WindowID(0)
CreateGadgetList(WindowID)
W=EditorGadget(#PB_Any,0,0,400,400)
SelectElement(Test(),3)
ForEach Test()
AddGadgetItem(W,-1 ,Test() )
Next
Repeat
Event= WaitWindowEvent()
Until Event= #PB_Event_CloseWindow
EndIf
For T= 1 To 1000000000:Next t
Das Problem ist das immer nur die Enden der Textdateien sprich Elemente angezeigt werden
NewList Test.s()
For V= 0 To 9
AddElement(Test())
If ReadFile(63,"C:\Dokumente und Einstellungen\Administrator\Desktop\nTextadventure\TW2\T"+Str(V)+".txt")
While Eof(63)= 0
C$=ReadString(63)
Test()=C$
Wend
CloseFile(63)
EndIf
Next
If OpenWindow(0,100,100,640,480,"Test",#PB_Window_SystemMenu)
WindowID=WindowID(0)
CreateGadgetList(WindowID)
W=EditorGadget(#PB_Any,0,0,400,400)
SelectElement(Test(),3)
ForEach Test()
AddGadgetItem(W,-1 ,Test() )
Next
Repeat
Event= WaitWindowEvent()
Until Event= #PB_Event_CloseWindow
EndIf
For T= 1 To 1000000000:Next t
Das Problem ist das immer nur die Enden der Textdateien sprich Elemente angezeigt werden