Autor |
Beitrag |
Donn!e DarKo
      
Beiträge: 20
Ubuntu 9.10, Ubuntu 8.04 LTS ( Server Edition )
Delphi
|
Verfasst: Mi 06.05.09 08:27
Hey,
Also ich hab ein mega Problem. In der Schule sind wir bereits bei dem Array angekommen. Leider ist unsere Lehrerin nicht umbedingt so Kompetent... Den das erklären hat mir nicht geholfen, will aber nicht ganz absacken in Proggen.
Und versuchs nunmal auf dem weg hier. In der hoffnung genug hilfe zu bekommen.
Also unsere momentane aufgabe ist ...
Wir sollen eine Datenbank ähnliche Anwendung Programmieren.
Eine Songliste
Aufgaben dazu :
1 erfassen --> Speichern ins Array
2 anzeigen ( 1 Datensatz )
3 alle anzeigen ; oder gefiltert durch suche
4 ändern
5 löschen
6 einfügen ( vor oder nach )
7 blättern ( vor, zurück, First, Last )
8 Suche
9 Speichern / Laden in eine TxT
Ich bitte wegen dem kram wirklich um Hilfe ... ! Wäre sehr dankbar über alles was mich weiter bringt und den kram endlich verstehen lässt ...
Das fängt nämlich schon bei dem Array an, das hab ich nicht ganz verstanden. Vielleicht wird mir ja ein wenig mit Code geschnipsel ausgeholfen
Wäre sehr sehr dankbar (:
Gruß
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Mi 06.05.09 08:31
Was beim Array hast Du denn nicht verstanden?
Ein Array kannst Du Dir im einfachsten Fall wie eine Tabelle vorstellen. Jedes Element in einem Array kannst Du über eine "Zeilennummer" ansprechen.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Mi 06.05.09 08:36
Ja, aber im Normal-Fall nur wie eine _einspaltige_ Tabelle.
Sonst müsstest Du dort ein Array mit Titel[x,y] machen, wobei x und y natürlich für die Zeilen- und Spaltennummern stehen und entweder als (Integer-)Variablen eingesetzt werden müssen, oder durch Zahlen ersetzt werden müssen.
Zuletzt bearbeitet von ffgorcky am Mi 06.05.09 08:38, insgesamt 1-mal bearbeitet
|
|
Donn!e DarKo 
      
Beiträge: 20
Ubuntu 9.10, Ubuntu 8.04 LTS ( Server Edition )
Delphi
|
Verfasst: Mi 06.05.09 08:38
Hey,
Danke für die Schnelle antworten. Ja das habe ich schon kapiert. Ich weiß aber z.B. nicht wie ich die einzelnen zahlen ansprechen soll, das ich z.B. mit edit1 ne zahl oder etwas anderes darin suche und in einen Label ausgebe. Bzw. wie schreibe ich den ins Array rein ?
Ich weiß jetzt nur das ich es vorher deklarieren muss und das wars auch schon.
Gruß
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Mi 06.05.09 08:42
Also zum Beispiel so (der Erste Titel-Intepret in der ersten Spalte eines Arrays):
Titel[0,0]:='Herbert Grönemeier';
Und der Titel (in der zweiten Spalte):
Titel[0,1]:='Weiß grad keinen';
|
|
Donn!e DarKo 
      
Beiträge: 20
Ubuntu 9.10, Ubuntu 8.04 LTS ( Server Edition )
Delphi
|
Verfasst: Mi 06.05.09 08:45
Also weise ich somit direkt von anfang an einen festen wert zu ?
Wie muss das ganze den dann aussehen, wenn ich es mit einem edit zuweisen möchte ? Ich meine, er muss das ganze ja dann auch hoch zählen.
Gruß
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Mi 06.05.09 08:47
So recht habe ich nicht verstanden, wo Dein Problem liegt.
Ich geb Dir mal ein Minimalbeispiel zum Array:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var Songs : Array[0..3] of String; I : Integer; begin
songs[0] := 'Alle meine Entchen'; songs[1] := 'Hänschen klein'; songs[2] := 'Wie schön, dass Du geboren bist'; songs[3] := 'Klein Häschen wollt spazieren gehn';
for i := 0 to 3 do ShowMessage(songs[i]);
end; |
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
Donn!e DarKo 
      
Beiträge: 20
Ubuntu 9.10, Ubuntu 8.04 LTS ( Server Edition )
Delphi
|
Verfasst: Mi 06.05.09 09:15
Hey,
Danke für das Beispiel ... das probier ich gerade mal aus.
Mal schauen ob ichs danach verstanden habe.
Gruß
--- Moderiert von Narses: Beiträge zusammengefasst---
So,
Den anfang hätte ich schonmal geschafft. Nun, bräuchte ich noch hilfe zum suchen.
Also, wie kann ich nun einen bestimmten eingespeicherten wert suchen?
z.B. ich habe an irgendeiner Position Linkin Park gespeichert und genau das will ich suchen, mit der Positions ausgabe ?
Danke schonmal für die Hilfe !
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| var Form1: TForm1; songnr: integer; song:array[1..30] of string;
implementation
procedure TForm1.erfassenClick(Sender: TObject); begin
song[songnr]:=edit1.text; songnr:=songnr+1; listbox1.items.add(edit1.text);
end;
procedure TForm1.Button2Click(Sender: TObject); var i:integer; begin
listbox1.items.clear; i:=1;
while i < songnr do begin listbox1.items.add('Titelnr ' + inttostr(i) + 'Titel ' + song[i]); i:=i+1; end
end;
procedure TForm1.FormCreate(Sender: TObject); begin songnr:=0; end; |
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Mi 06.05.09 09:22
Du hast die Lösung schon fast vor Dir
Dein Quellcode zum Ausgeben der Songs:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| i:=1;
while i < songnr do begin listbox1.items.add('Titelnr ' + inttostr(i) + 'Titel ' + song[i]); i:=i+1; end |
Wenn Du nun statt der Ausgabe in der Listbox (Listbox1.item.add) einfach vergleichst, ob song[i] dem gesuchten entspricht, dann hast Du die Position gefunden.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
Donn!e DarKo 
      
Beiträge: 20
Ubuntu 9.10, Ubuntu 8.04 LTS ( Server Edition )
Delphi
|
Verfasst: Mi 06.05.09 10:05
Hmm,
Mal schauen obs klappt ...
Dann hab ich ja 2 Monate lernen, fast in guten 2 Schule stunden hinbekommen
Also auf ein neues.
Gruß
--- Moderiert von Narses: Beiträge zusammengefasst---
So,
die suche hat geklappt nun zu meiner nächsten Frage.
Wie speicher ich das array in einer Text datei, so das sich
ein dialog öffnet damit ich auswählen kann wohin ich es speichern
kann.
Ich hab schonmal angefangen, aber irgendwie klappt es nicht.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var fout:textfile; r:integer; begin
assignfile(fout,savedialog1.FileName); rewrite(fout);
for r:= 1 to 30 do begin writeln(fout,song[r].titel); writeln(fout,song[r].album); writeln(fout,song[r].interpret); end; closefile(fout);
end; |
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 06.05.09 10:13
Ist song denn jetzt ein Array of record?
|
|
Donn!e DarKo 
      
Beiträge: 20
Ubuntu 9.10, Ubuntu 8.04 LTS ( Server Edition )
Delphi
|
Verfasst: Mi 06.05.09 10:34
Jap, damit ich mehre Datensätze habe.
EDIT:
Also ich hab es hin bekommen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure TForm1.Button3Click(Sender: TObject); var fout:textfile; r:integer; begin
if savedialog1.execute = true then begin
assignfile(fout,savedialog1.FileName); rewrite(fout);
for r:= 1 to 30 do begin if r < songnr then begin writeln(fout,song[r].titel); writeln(fout,song[r].album); writeln(fout,song[r].interpret); end; end; closefile(fout); |
So nun brauch ich folgendes, ich muss z.B. wenn ich bereits 1 - 5 belegt habe ...
ein weiteres zwischen drin einfügen. Also an Position 3 ... wie funktioniert das den genau ?
Gruß
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Mi 06.05.09 10:45
Siehste, langsam bekommst Du den Dreh raus!
Schau Dir mal in der Hilfe "SetLength" an.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 06.05.09 10:52
|
|
Donn!e DarKo 
      
Beiträge: 20
Ubuntu 9.10, Ubuntu 8.04 LTS ( Server Edition )
Delphi
|
Verfasst: Mi 06.05.09 11:03
DeddyH hat folgendes geschrieben : | Und bitte nicht
Zitat: | Delphi-Quelltext 1:
| if savedialog1.execute = true | |
sondern
Delphi-Quelltext 1:
| if savedialog1.execute | |
Sry, so wurde es mir von meiner lehrerin erklärt.
Also das true einfach weg lassen ?
Na ja der unterricht ist nun vorbei, hab jetzt nen anderes fach.
Ich danke für die ausführliche hilfe. Hat mich aufjedenfall weiter gebracht
Hab jetzt schonmal einen ansatz geschrieben, von dem Position einfügen.
Mal schauen obs klappt. Also heute mittag, nach der Schule
Hab ja noch einiges aufzuhollen.
Vielen Dank nochmal !
Gruß
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Mi 06.05.09 13:22
Ja, die Funktion savedialog1.execute gibt ja einfach nur einen boolschen Wert zurück, ob denn gespeichert oder abgebrochen wurde. Und Dich interessiert ja genau der Wert, weil Du ja auch auf den Abfragst, also brauchst Du das dahinter nicht.
Jede If-Frage ist ja eigentlich einfach nur:
Wenn ja, dann mach dies...
und eventuell dann noch:
Wenn nicht, dann mach jenes...
was ja dann (insgesamt) so zu lösen wäre (mit wasAuchImmer als boolscher Variable):
Delphi-Quelltext 1: 2: 3: 4:
| if wasAuchImmer then machDieses(); else machJenes(); |
Und wenn Du abfragen möchtest, ob der Dialog abgebrochen wurde (also wenn das - warum auch immer - aus Sicht des Users doch noch nicht gespeichert werden soll), dann heißt das so:
Delphi-Quelltext 1:
| if not savedialog1.execute then |
...und zum Thema
Donn!e DarKo hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3:
| for r:= 1 to 30 do begin if r < songnr then |
|
Da würde ich das eher so schreiben:
Delphi-Quelltext 1:
| for r:= 1 to songnr do |
Damit ersparst Du Dir doch eine Zeile, die das ganze ja auch nicht gerade übersichtlicher macht.
...wobei da ja auch wieder die Frage ist, ob Du die allererste Zeile -also die Zeile 0 (=Null)- wirklich nicht mit einbeziehen möchtest.
|
|