![]() |
DJ BPM Programm,brauche dringend Hilfe!!!
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!
Muss ein Programm für die Schule machen. Und zwar sollen in das Programm ein Interpret(edit1.text),Titel(edit2.text) und Geschwindigkeit(edit3.text) eines Songs aufgenommen werden und gespeichert bleiben. Gespeichert soll alles in einen File oder in ein Array[1..300] das in einem File gespeichert wird.Anschliessend soll man auch wieder alles einzeln löschen können.(Also ein Interpret,Titel und eine Geschwindigkeit eines einzelnen Liedes sollen gelöscht werden] Was ich bereits geschafft habe ist : Um alles leichter Anzeigen zu können werden die eingegebenen Interpreten und Titel in einer Listbox angezeigt. Und es können Einträge aus der Listbox gelöscht werden. Kann mir jemand bei dem Programm Code helfen bzw ihn ergänzen? Danke im Vorraus Joe.Fresh Hier sollen die Titel hinzugefügt werden und dann in einer Datei gespeichert werden.
Code:
procedure TForm1.Button2Click(Sender: TObject);
var hilf,hilf2,hilf3:string ; zaehler:integer; begin hilf:=edit1.text; hilf2:=edit2.text; hilf3:=' - '; if edit1.text='' then showmessage ('Bitte erst den Namen eingeben') else listbox1.items.add(hilf+hilf3+hilf2); zaehler:=listbox1.items.count; end; Hier sollen die gespeicherten Daten einzeln gelöscht werden.
Code:
procedure TForm1.Button3Click(Sender: TObject);
var i:integer; begin if listbox1.itemindex = -1 then showmessage ('Bitte erst Eintrag markieren') else showmessage ('Eintrag gelöscht'); for i:=0 to 300 do begin if listbox1.itemindex = i then listbox1.items.delete (i); end; end; und hier sollen die gespeicherten Daten wieder angezeigt werden. Am besten in den 3 Textfeldern.
Code:
procedure TForm1.Button4Click(Sender: TObject);
begin end; |
Moin Joe,
mal eben zu Punkt 2: Die for-Schleife brauchst Du da gar nicht. Wenn ListBox1.ItemIndex <> -1 ist, kannst Du diesen Wert auch direkt zum löschen verwenden.
Delphi-Quellcode:
Da Du ja vorher geprüft hast, das es ein gültiger Index ist sollte da so gehen.
// Statt der for Schleife
ListBox1.Items.Delete(ListBox1.ItemIndex); Wenn, müsste die Schleife von 0 bis ListBox1.Items.Count-1 gehen, da der Index hier nullbasiert ist. Passieren würde in Deinem Beispiel zwar nichts, aber es ist sauberer. Habt ihr irgendeine Vorgabe, wie das Array aussehen soll? |
Danke schonmal für das mit der Schleife.
Ja das bei dem Array is eigentlich egal Hauptsache so in der Art teintrag=Record interpret,titel,geschwindigkeit:string[100]; und das vielleicht das ganze array so maximal 1000 felder hat.aller höchstens. mfg joe.fresh |
Moin Joe,
was das Speichern angeht: Welche Zugriffe auf Dateien habt ihr denn behandelt? Es gibt da verschiedene Möglichkeiten, die zwar intern gleich funktionieren, aber nach aussen hin doch ganz anders zu handhaben sind. Wäre vielleicht nicht so passend, die falsche Variante hier anzubieten, die ihr noch gar nicht hattet. |
Hmm wir haben die ganz normalen
standardmässigen ein und ausgabe routinen behandelt.also so sachen mit assign file write und read usw. das alles in einer datei. z b datei.dat gespeichert wird. also so die anfänge von speichern. also nur normale dateien keine textdateien. mfg dominik |
Moin Dominik,
sorry, aber mit diesen Funktionen hab' ich leider keine sonderliche Erfahrung. Ich hatte sie schon "befürchtet". Das sollte sich mal jemand ansehen, der Dir da gezielt helfen kann. |
Moin Dominik,
zwei Sachen fallen mir da noch ein
BTW: Gibt es eine genaue Aufgabenstellung für dieses Programm? |
|
ja das mit der ausgabe steht nur da,
es soll halt der 4te button angeklickt werden und dann die daten ausgegeben werden in die 3 textfelder. und mir is eingefallen eigentlich könnte man ja nur die listbox in einen file speichern und alles ohne arrays machen,oder? und dann wie du gesagt hast alles einfach mit leerzeichen in die listbox schreiben oder? mfg dominik |
hehe,das is einer aus meiner klasse :-)
mfg dominik |
Zitat:
Andere Möglichkeiten: Daten bei jeder Eingabe parallel zur Speicherung in der Listbox noch in einem Array speichern und dieses dann in eine Datei schreiben oder Daten bei jeder Eingabe gleich in eine typisierte Datei schreiben. |
Moin Dominik,
Zitat:
was ich aber wichtig finde: Du bist von alleine drauf gekommen. Deshalb allerdings auch meine Frage bezüglich der Aufgabenstellung. Wenn die Aufgabe vorsieht, dass ihr das mit den Datei Prozeduren, und Arrays macht hilft diese Überlegung leider nicht viel weiter. Als Trennzeichen kann aber nur ein Zeichen fungieren, dass in den eigentlichen Daten nicht zugelassen ist. Zitat:
|
Ja habe die durch ein - getrennt,wird auch
dann etwa so in der listbox angezeigt z.b. 50Cent - 21Questions - 93 was muss ich eingeben damit das in einem file gespeichert wird und dann beim nächsten programmstart noch sichtbar ist? mfg joe.fresh
Code:
hilf:=edit1.text;
hilf2:=edit2.text; hilf3:=' - '; hilf4:=edit3.text; if edit1.text='' then showmessage ('Bitte erst den Namen eingeben') else listbox1.items.add(hilf+hilf3+hilf2+hilf3+hilf4); |
Hi Christian!
Ja die Aufgabestellung ist eigentlich dass etwas eingegeben wird und dann in einem File gespeichert wird und dann auch wieder aufgerufen werden kann. auch nachdem das Programm geschlossen worden ist man kann arrays benutzten,muss aber zum glück nicht. meinst du ich könnte das mit dem direk speichern der listbox hinbekommen? mfg dominik |
Moin Dominik,
ich könnte es Dir natürlich direkt hier schreiben, halte es aber für sinnvoller es, vorerst, mal nicht zu tun (sollte ich mich irren ... ;-) ) Schau mal in der Hilfe unter TListBox, mit besonderem Augenmerk auf die Eigenschaften, und deren Methoden. Soweit wie Du jetzt bist dürfte das nicht allzu schwierig werden. |
hi!habe nur eine sache gefunden
bis auf dass jetzt alle einträge sortiert in die listbox eingetragen werden. das hab ich auch shcon lange gesucht. aber das hier is mir aufgefallen Destination.Assign(Source); vielleicht kann man ja einfach die listbox in den file kopieren? mfg dominik |
Moin Dominik,
OK, noch ein Hinweis: In welcher Eigenschaft der Listbox stehen die Daten? |
in den items,oder?
also muss ich die immer die items in den file speichern? dominik |
Moin Dominik,
so isses ;-) Und wenn Du Dir mal anschaust, welche Methoden die Items haben, dürfte es auch nicht schwer sein herauszufinden, wie Du das machen kannst. |
property Data: Pointer;
??? ansonsten hab ich keine ahnung. mfg dominik |
Moin Dominik,
TListBox.Items nicht TListView.Items ;-) [EDIT] Ausserdem: Methoden, nicht Eigenschaften [/EDIT] |
hi!
ich finde da einfach nix. kannst du nicht mal einfach ein paar zeilen vom coe hinschreiben? mfg dominik |
Moin Dominik,
dann mal die Auflösung ;-) Die TListBox.Items sind vom Typ TStrings, und TStrings hat die Methode LoadFromFile. Ergo:
Delphi-Quellcode:
ListBox1.Items.LoadFromFile('Hier der Pfad zu der Datei');
|
ah danke dir!!!
ok und speichern in die datei is dann
Code:
oder wie?
listbox1.item.savetofile (' ');
mfg dominik |
Hallo,
ja mit SaveToFile('C:\Test.txt'); Grüsse, Daniel :hi: |
hi!bis jetzt ist alles glatt gelaufen
aber beim versuch alles zu speichern komm die meldung dass die datei nicht erstellt werden kann. wieso das? hier ein teil vom quelltext. danke dominik
Code:
und hier der button der dann die listbox aus dem file lädt.
type
tdatei = file; var speicher :tdatei; procedure TForm1.Button1Click(Sender: TObject); var hilf,hilf2,hilf3,hilf4:string; begin //hinzufügen hilf:=edit1.text; hilf2:=edit2.text; hilf3:=' - '; hilf4:=edit3.text; if edit1.text='' then showmessage ('Bitte erst den Namen eingeben') else listbox1.items.add(hilf+hilf3+hilf2+hilf3+hilf4); assignfile(speicher,'speicher.dat'); {$I-} Reset (speicher); {$I+} if ioresult<>0 then rewrite(speicher); listbox1.items.savetofile ('speicher.dat'); closefile(speicher); end;
Code:
procedure TForm1.Button4Click(Sender: TObject);
begin ListBox1.Items.LoadFromFile('speicher.dat'); end; |
Moin Dominik,
weil Du Dir das ganze Assing, Rewrite usw. sparen kannst, ausserdem damit sperrst Du die Datei. |
jawuuhl es klappt!
boah,danke chris du hast mir echt sau geholfen!!!! ich werde jetzt erstmal rausgehen und später noch ein paar features dazu machen! DANKE DANKE DANKE bis dann dominik |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz