Seite 2 von 2

Verfasst: 03.08.2006 00:36
von AndyMars
Juhu razor

Hab eben deinen Versuch gesehen: http://www.purebasic-lounge.de/viewtopi ... 6632#36632

Nimm es nicht persönlich, ich will dich keinesfalls vor den Kopf stossen, aber ich glaube, du verstehst den Code nicht ganz. Wenn du noch ein Anfänger bist, hast du dir ja schon einiges vorgenommen... /:->

Code: Alles auswählen

Procedure _SaveList()
  If CreateFile(0,"Liste.txt")
    For i=0 To CountGadgetItems(1)-1
      a$=GetGadgetItemText(1, i, 0)
      For j=23 To 10 ;Anzahl Spalten-1 -> 2 -> das wäre entsprechend anzupassen...
        a$+"|"+GetGadgetItemText(1, i, j)
        ;das "|" als Trennzeichen ist hier willkürlich - das muss berücksichtigt werden (es darf im eigentlichen Text nicht vorkommen)
      Next
      WriteStringN(0,a$)
    Next
    CloseFile(0)
  EndIf
EndProcedure 
Das ist genau das Problem, wenn man einen Code zu übernehmen versucht, ihn aber nicht versteht. Eigentlich ist die Lösung deines Problems ja vollständig mit PB alleine zu lösen, d.h. du findest die Antworten schon alle in der Hilfe zu PB... OK, manchmal braucht man trotzdem einen Anstoss... :)

Überlegt dir doch, was willst du tun?

1. Daten aus dem ListIcon holen.
2. Diese Daten in einer Datei speichern.

Nun - zum 1. (2. lassen wir mal weg) - da findest du den Befehl GetGadgetItemText(#Gadget, Eintrag, Spalte). Was ist nun das Problem? Genau, er holt nur einen einzigen Wert aus dem ListIcon - du willst jedoch alle...

Jetzt muss du dieses 1. Problem aufteilen - es lässt sich nicht mit einem Befehl erledigen. Das ist übrigens ein wesentlicher Teil beim Programmieren - das zerkleinern von Aufgaben...

Wie gehen wir das nun an? Betrachten wir mal nur eine Zeile deines Listicons. Du hast also 24 Felder darin (Spalten), d.h. du könntest nun 24 mal den Befehl GetGadgetItemText() ausführen und hättest die komplette Zeile...

Code: Alles auswählen

a$=GetGadgetItemText(1,0,0)+"|"
a$=a$+GetGadgetItemText(1,0,1)+"|"
a$=a$+GetGadgetItemText(1,0,2)+"|"
a$=a$+GetGadgetItemText(1,0,3)+"|"
usw.
Das ist natürlich zu mühsam. Du verstehst schon, wie die "for ... next"-Schlaufe funktioniert, wofür sie gut ist, oder? Falls du das nicht tust, guck erst mal in der Hilfe nach. Um solche Befehle zu verstehen, ist es manchmal auch eine gute Idee, sie vollständig ausserhalb eines grösseren Projektes auszuprobieren - einfach mal ein ganz kleines Progrämmchen zu schreiben - einfachso um es auszuprobieren. Nur so ein allgemeiner Tipp von mir. Vielleicht verstehst du den Befehl ja auch bestens...

In der Hilfe zu GetGadgetItemText() findest du den
Hinweis: Alle 'Eintrag'-Werte beginnen bei 0...
Was heisst das nun auf unsere Zeile betrachtet? Wir wollen Spalte 0 bis Spalte 23 auslesen. Wie muss nun wohl "for j=? to ?" besetzt werden?

Offtopic:
Noch kurz zu deiner Aussage "Ich kann Z.B nicht so lange warten, deshalb unterhalte ich mich mit vielen Leuten vom Fach in vielen unterschiedlichen Foren, das ist normal und es ist nichts schlimmes dran. Ich denke das macht jeder so..." - du sprichst von deiner Zeit - bitte denk auch an die Zeit der anderen, die sich deiner Frage widmen. Ich muss sagen, es schmerzt etwas, wenn ich hier Zeit für dich aufwende und damit rechnen muss, dass es vielleicht umsonst ist, weil du vielleicht in einem anderen Forum schon eine Antwort erhalten hast... denk darüber nach...
Wir sind alle Menschen.

Verfasst: 03.08.2006 08:42
von bembulak
Ich gebe Kiffi und Kaeru recht. Das ist wirklich Zeitverschwendung. Schade, denn die Leute hier und in der Lounge versuchen immer gerne, zu helfen, wenn es möglich ist.
Das Lesen der Hilfe in der Zeit des Wartens auf Antwort hätte dich, so kann ich es dem Thread in der Lounge entnehmen, schon weitergebracht.

Hoffe, du kannst dein Problem trotzdem Lösen.

Peace.

Verfasst: 03.08.2006 16:52
von razor
Danke AndyMars,
nach langem Ausprobieren habe ich endlich gepackt!!!!!! :mrgreen: :D :)

Danke für die ausführliche Beschreibung und deine Mühe.

Ein Problem habe ich noch: Die .csv Datei in die ich meine Daten reinkopiere.

Ich habe schon alles ausprobiert, ich muss die Spalten beschriften. Der Spaltenname aus dem Gadget wird ja nicht mit übernommen. Aber es geht einfach nicht. Ich könnte die Namen ja mit "AddGedGetItem" eintragen lassen aber ich bekomme die erste Spalte in der .csv nicht leer.
Es heisst die Enträge beginnen bei null, kann man da was machen? :(

Verfasst: 03.08.2006 17:18
von AndyMars
Ich verstehe deine Frage nicht ganz...

Aber in der Hilfe zu ListIconGadget() findest du Folgendes:
- GetGadgetItemText(): Ermittelt den aktuellen Text des angegebenen Eintrags. (oder den Spalten-Titel, wenn 'Eintrag' = -1)
- SetGadgetItemText(): Ändert den aktuellen Text des angegebenen Eintrags. (oder den Spalten-Titel, wenn 'Eintrag' = -1)

Das ist meines Wissens neu seit PB 4 - damit solltest du die Titel des ListIconGadget() auslesen bzw. ändern können...

Zu CSV-Dateien kann ich nur sagen, das deren Handling nicht ganz so einfach ist... zum Format siehe: http://de.wikipedia.org/wiki/CSV-Datei

Verfasst: 03.08.2006 17:40
von razor
nee, irgendwie nicht!!!
ich habe es jetzt ausprobiert und ich musste nur statt "For i=0" einfach "For i=-1" eingeben.

Code: Alles auswählen

Procedure _SaveList() 
  If CreateFile(0,"test.csv") 
    For i=-1 To CountGadgetItems(#ListIconGadget)-1 
      a$=GetGadgetItemText(#ListIconGadget, i, 0) 
      For j=0 To 23
        a$+";"+GetGadgetItemText(#ListIconGadget, i, j) 
        
      Next 
      WriteStringN(0,a$) 
    Next 
    CloseFile(0) 
  EndIf 
EndProcedure 
Aber ich bin jetzt total zufrieden. :allright: :mrgreen:
Was mir noch fehlt ist, dass per Tastendruck die .csv Datei erstelle und nicht automatisch. Ich mache mich mal in PB Hilfe auf die Suche!! :allright:

Verfasst: 03.08.2006 21:01
von Kaeru Gaman
> nee, irgendwie nicht!!!

>> - GetGadgetItemText(): Ermittelt den aktuellen Text des angegebenen Eintrags. (oder den Spalten-Titel, wenn 'Eintrag' = -1)

> nee, irgendwie nicht!!!


> ich habe es jetzt ausprobiert und ich musste nur statt "For i=0" einfach "For i=-1" eingeben.

also nee, irgendwie doch ?!?


> dass per Tastendruck die .csv Datei erstelle und nicht automatisch.

na, das wird ne Odyssey...

ich sehe bei dir einfach extreme Defizite im Grundverständnis für Verschiedene Aspekte des Themas "Programmierung"

magste nich vielleicht erstmal kleine Brötchen backen? :roll:

Verfasst: 04.08.2006 08:44
von gnozal
Without programming it yourself (if you don't mind using a library) :

PureLVSORT_LoadListIcon()
PureLVSORT_LoadListIconTXT()
PureLVSORT_SaveListIcon()
PureLVSORT_SaveListIconTXT()

http://people.freenet.de/gnozal/PureLVSORT_.htm
http://people.freenet.de/gnozal/PureLVSORT_.zip

Verfasst: 04.08.2006 16:38
von razor
jetzt mal zu dir "Kaeru Gaman"
Ist klar dass mir die Grungkenntnisse fehlen, da ich ende letzter woche überhaupt damit angefangen habe :lol:
Ich bin mir auch nicht sicher ob du Brötchen backen kannst!
Und ich bin gerade dabei das Grungwissen zu kapieren und das ist nicht leicht, da in der PB Hilfe oft einfach ein Befehl steht und die Erläuterung was dieser Befehl macht. Aber Wie und wo soll ich diesen Befehl in Verbindung mit was einsetzen. Das macht einem Anfänger, der noch nie Programiert hat, denke ich am meisten zu schaffen .

Aber das mit dem Speichern auf Button-Click kann ja nicht so schwer sein :D

Ich wünsche euch allen noch einen schönen Abend!

Verfasst: 04.08.2006 17:30
von AndyMars
Das Basiswissen ist schon wichtig... Zu deiner Buttonfrage kannst du in der Hilfe unter WaitWindowEvent() nachschauen - da hast du ein Codebeispiel... (hat es im Übrigen einige in der Hilfe...)

Ansonsten legen wir dir aber ein Tutorial ans Herz, damit du dein Grundrüstzeugs fürs Programmieren erarbeiten kannst. Arbeite doch mal ein paar Tutorials durch, das kostet nicht sehr viel Zeit, macht durchaus auch Spass und nachher geht das Programmieren schon viel leichter.

Hier findest du z. B. mal ein Anfang:
http://www.robsite.de/tutorials.php?tut=purebasic
Ich empfehle dir mal als erstes "Schleifen und logische Entscheidungen" und "Gadget, Menü & Toolbar"...

<)