Textdatei mit Semikolon getrennt, das in AddGadgetItem

Anfängerfragen zum Programmieren mit PureBasic.
Micro
Beiträge: 59
Registriert: 28.12.2006 17:44
Computerausstattung: Intel 10850K, 16GB RAM
div. andere Rechner...
Wohnort: Nordkirchen

Textdatei mit Semikolon getrennt, das in AddGadgetItem

Beitrag von Micro »

Hallo zusammen,

manchmal sehe ich den Wald vor lauter Bäume nicht mehr...

Ich hab' ne Textdatei, wo mehrere Werte getrennt mit einem Semikolon hintereinander stehen. Zeile für Zeile wiederholen sich die Werte in ihrer Anordnung.

Code: Alles auswählen

470;10014316712;Text1;10.6593;27.7761;1
472;10014316727;Text2;7.4322;26.1325;3
....
Das möchte ich auslesen und in ein AddGadgetItem übergeben. Hab' schon mit "StringField" experementiert, klappt aber nicht:

Code: Alles auswählen

AddGadgetItem(1, -1, StringField(ReadString(0), 1, ";") + Chr(10) + StringField(ReadString(0), 2, ";") + Chr(10) + StringField(ReadString(0), 3, ";") + Chr(10) + StringField(ReadString(0), 4, ";") + Chr(10) + StringField(ReadString(0), 6, ";"))
Das Problem ist, das nur jede 6. Zeile im AddGadgetItem angezeigt wird!

Wer könnte mir mit einem Tipp helfen?

Gruß Micro
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag von jojo1541 »

Micro hat geschrieben: Das möchte ich auslesen und in ein AddGadgetItem übergeben. Hab' schon mit "StringField" experementiert, klappt aber nicht:
Man kann nichts in AddGadgetItem einfügen, AddGadgetItem FÜGT in ein bestehendes Gadget ein.

In was für ein Gadget fügst du diesen Text eigentlich ein? EditorGadget? TextGadget?
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Micro
Beiträge: 59
Registriert: 28.12.2006 17:44
Computerausstattung: Intel 10850K, 16GB RAM
div. andere Rechner...
Wohnort: Nordkirchen

Beitrag von Micro »

Jo,
jojo1541 hat geschrieben:
Micro hat geschrieben: Das möchte ich auslesen und in ein AddGadgetItem übergeben. Hab' schon mit "StringField" experementiert, klappt aber nicht:
Man kann nichts in AddGadgetItem einfügen, AddGadgetItem FÜGT in ein bestehendes Gadget ein.

In was für ein Gadget fügst du diesen Text eigentlich ein? EditorGadget? TextGadget?
in ein ListIconGadget. Hab' aber gerade noch ein wenig "gefummelt" und ne Lösung gefunden:

Code: Alles auswählen

If ReadFile(0, lesedatei.s)
      While Eof(0) = 0
        Text.s = ReadString(0)
        Text1.s = StringField(Text.s, 1, ";")
        Text2.s = StringField(Text.s, 2, ";")
        Text3.s = StringField(Text.s, 3, ";")
        Text4.s = StringField(Text.s, 4, ";")
        Text5.s = StringField(Text.s, 5, ";")
        Text6.s = StringField(Text.s, 6, ";")
        AddGadgetItem(1, -1, Text1.s + Chr(10) + Text2.s + Chr(10) + Text3.s + Chr(10) + Text4.s + Chr(10) + Text6.s)
      Wend
      CloseFile(0)
EndIf
Das Problem lag' daran, das durch den wiederholten aufruf von ReadString() jedesmal eine neue Zeile eingelesen wird. Argl... Ich sag's ja, manchmal sehe ich den Wald vor lauter....

Vielen Dank für die Antwort.

Gruß aus Dortmund
Micro
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Du liest ja auch 6 Zeilen bei bei einem Eintrag.

Bei jedem Readstring wird die nächste Zeile der datei gelesen.

Code: Alles auswählen

Zeile$ = ReadString(0)
For i = 1 To CountString(Zeile$,";")
Eintrag$ + StringField(Zeile$, i, ";") + Chr(10)
Next
AddGadgetItem(1, -1, Eintrag$))
Micro
Beiträge: 59
Registriert: 28.12.2006 17:44
Computerausstattung: Intel 10850K, 16GB RAM
div. andere Rechner...
Wohnort: Nordkirchen

Beitrag von Micro »

X360 Andy hat geschrieben:Du liest ja auch 6 Zeilen bei bei einem Eintrag.

Bei jedem Readstring wird die nächste Zeile der datei gelesen.

Code: Alles auswählen

Zeile$ = ReadString(0)
For i = 1 To CountString(Zeile$,";")
Eintrag$ + StringField(Zeile$, i, ";") + Chr(10)
Next
AddGadgetItem(1, -1, Eintrag$))
Jo, das sollte auch so sein.
In der Textdatei sind auch Daten vorhanden, die ich zu einem späteren Zeitpunkt brauche, aber nicht in der momentanen Darstellung.

Ich danke Dir! Du hast mir sehr geholfen, da ich die Funktion (alles anzeigen) sehr gut gebrauchen kann!!!

Gruß Micro
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Beitrag von Pelagio »

Wenn ich es richtig verstanden habe wolltest Du so etwas:

Code: Alles auswählen

NewList FileData.s()

If ReadFile(0, lesedatei.s) 
   While Eof(0) = 0 
      AddElement(FileData())
      FileData() = ReadString(0) 
   Wend 
   CloseFile(0) 
EndIf

For n=0 To (ListSize(FileData())-1) Step  6
   AddGadgetItem(1, -1, ReplaceString(FileData(), ";", Chr(10)))
Next n
Wobei Replacestring schon beim lesen der Daten aus der Datei angewandt werden kann, aber auch alles zusammen kann so gestaltet werden das es beim Laden der Daten schon ins ListIconView gestellt wird.

Code: Alles auswählen

If ReadFile(0, lesedatei.s) 
   While Eof(0) = 0 
      Zaehler + 1
      Text$  = ReplaceString(ReadString(0),";", Chr(10))
      If Zaehler<6
         AddGadgetItem(21,-1, Text$) 
         Zaehler = 0
      EndIf
   Wend 
   CloseFile(0) 
EndIf
Ich hoffe es hilft und es hat sich in der Schnelligkeit kein Fehler eingeschlichen. :allright:
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS]. :allright:
Antworten