Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - kleines Array Problem
Fredy - Mo 18.05.09 17:31
Titel: kleines Array Problem
Hallo liebe Community,
Ich habe eine Combobox mit Artikeln diese Artikel möchte ich bei bestätigen des Buttons in ein Array laden.
z.B. ich wähle z.B. Maus in der Combobox dann soll in meinem Warenkorbartikel ( Mein Array ) in der ersten Zeile die Maus stehen.
Delphi-Quelltext
1:
| Warenkorbartikel : Array of shortstring; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TfrmRAEingabe.btnStartClick(Sender: TObject); var k: integer; begin
SetLength(Warenkorbartikel, 15);
for k := 0 to high(Warenkorbartikel) do begin Warenkorbartikel[k] := cbArtikel.Text; exit; end; end; |
Ich glaube ich mache einen Denkfehler schon mal Vielen Dank für eure Antworten.
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Mo 18.05.2009 um 17:59
Narses - Mo 18.05.09 17:45
Moin!
Fredy hat folgendes geschrieben : |
| Ich habe eine Combobox mit Artikeln diese Artikel möchte ich bei bestätigen des Buttons in ein Array laden. |
Die entscheidende Frage ist:
Fredy hat folgendes geschrieben : |
Delphi-Quelltext 1:
| Warenkorbartikel : Array of shortstring; | |
Soll dein Warenkorb immer eine feste Größe haben (dann brauchst du einen Füllmengenzeiger) oder soll er dynamisch "wachsen" (dann musst du die Länge des dyn. Arrays anpassen)? :nixweiss:
Fredy hat folgendes geschrieben : |
| z.B. ich wähle z.B. Maus in der Combobox dann soll in meinem Warenkorbartikel ( Mein Array ) in der ersten Zeile die Maus stehen. |
Aber doch erst nach dem Buttonklick, oder? :gruebel:
cu
Narses
Fredy - Mo 18.05.09 17:51
besser wäre es wenn es dynamisch ist ;) Aber wie musss ich das jetzt umsetzten ?
Dann müsste ich sozusagen die Länge bei jedem Klick einmal erhöhen oder ?
Ja erst beim Buttonklick soll er die Combobox einlesen.
Narses - Mo 18.05.09 17:56
Moin!
Fredy hat folgendes geschrieben : |
| besser wäre es wenn es dynamisch ist ;) Aber wie musss ich das jetzt umsetzten ? |
Dann wäre der Ablauf in etwa so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| var Warenkorbartikel : Array of shortstring;
Warenkorbartikel := NIL; SetLength(Warenkorbartikel,Length(Warenkorbartikel) +1); Warenkorbartikel[High(Warenkorbartikel)] := ComboBox1.Text; |
Das dyn. Array auf diese Weise anzufassen ist nicht grade "Speichersparend", aber für ein einfaches Programm mit wenig Einträgen ist das schon OK. ;)
cu
Narses
Fredy - Mo 18.05.09 18:05
okay so weit so gut wenn ich aber das Programm schließe und wieder öffne dann ist der Warenkorb wieder auf Null gesetzt und er überschreibt mir die ersten Artikel wieder oder ?
Delete - Mo 18.05.09 18:08
Sicher, Du wirst ihn schon speichern müssen.
Narses - Mo 18.05.09 18:09
Moin!
Fredy hat folgendes geschrieben : |
| wenn ich aber das Programm schließe und wieder öffne dann ist der Warenkorb wieder auf Null gesetzt und er überschreibt mir die ersten Artikel wieder oder ? |
Klar :nixweiss: wir haben ja auch nicht über das Speichern dieses Warenkorb-Arrays gesprochen, sondern über die Benutzung. ;)
Wenn du den Warenkorb auch speichern/laden sollst, dann würde ich aber besser eine TStringList nehmen, die kann mit den Methoden .LoadFromFile() und .SaveToFile() schon sowas. :idea:
cu
Narses
Fredy - Mo 18.05.09 18:10
das ist verständlich aber dann dürfte ich den Warenkorb ja nicht auf null setzten beim Programmstart.
Weil der gespeicherte Datensatz im Warenkorb soll ja nicht überschrieben werden sondern soll unten drunter weitergeführt werden nach einem neustart oder ?
Narses - Mo 18.05.09 18:13
Moin!
Fredy hat folgendes geschrieben : |
| das ist verständlich aber dann dürfte ich den Warenkorb ja nicht auf null setzten beim Programmstart. |
Doch, das würde ich schon tun, allerdings würde ich danach versuchen, einen schon existierenden Warenkorb zu laden. ;) Das Programm muss ja auch einen definierten Anfangszustand haben (das allererste Mal gibt´s ja noch gar keinen Warenkorbinhalt). :idea:
cu
Narses
Fredy - Mo 18.05.09 22:17
Hallo liebe Community,
hab es super hinbekommen dank eurer hilfe nur stehe ich jetzt vor einem Problem und zwar hab ich eine Speichern Funktion eingebaut.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure ArrayInDateiW(); var k: integer; begin rewrite(WarenkorbDatei); Seek(WarenkorbDatei, 0); for k := 0 to high(Warenkorbartikel) do begin WarenkorbSatz := Warenkorbartikel[k]; Write(WarenkorbDatei, WarenkorbSatz); end; CloseFile(WarenkorbDatei); end; |
Variabeldeklaration:
Delphi-Quelltext
1: 2: 3:
| WarenkorbSatz : WarenkorbRecord; WarenkorbDatei : WarenkorbFile; Warenkorbartikel : Array of shortstring; |
Das will Delphie aber leider nicht annehmen er gibt eine Fehlermeldung aus und zwar diese :
[Error] dateien.inc(824): Incompatible types: 'WarenkorbRecord' and 'ShortString'
Weiß jemand wie ich den Fehler beheben kann ?
Mfg. Fredy
Edit:
Delphi-Quelltext
1:
| Warenkorbartikel : Array of WarenkorbRecord; |
hab dies jetzt so geändert aber jetzt Funktioniert das mit dem Artikel hinzufügen nicht ;)
Delphi-Quelltext
1:
| Warenkorbartikel[High(Warenkorbartikel)] := cbArtikel.Text; |
Fehlermeldung: [Error] Unit19.pas(238): Incompatible types: 'WarenkorbRecord' and 'TCaption'
Edit2: okay das was ich bei Edit ausprobiert habe kann man nicht machen dann bekomme ich noch mehr Fehlermeldungen
Narses - Mo 18.05.09 22:40
Moin!
Wie ist den WarenkorbRecord deklariert (und warum)? :gruebel:
cu
Narses
Fredy - Mo 18.05.09 22:48
das hab ich so
Delphi-Quelltext
1: 2: 3:
| type WarenkorbRecord = record end; WarenkorbFile = file of WarenkorbRecord; |
das hab ich aus einer Vorlage ;) hab nicht genau gewust wie ich das umsetzten soll
Narses - Mo 18.05.09 22:51
Moin!
Fredy hat folgendes geschrieben : |
das hab ich so
Delphi-Quelltext 1: 2: 3:
| type WarenkorbRecord = record end; WarenkorbFile = file of WarenkorbRecord; |
das hab ich aus einer Vorlage ;) hab nicht genau gewust wie ich das umsetzten soll |
:hair: Ähm :? kennst du
das hier [
http://www.delphi-library.de/topic_Crashkurs+Delphi_37446.html] schon? Wenn nicht, bitte mal kurz durchlesen... :|
Diese record-Deklaration und das File of desselben sind komplett nutzlos. Am besten machst du das mit dem Warenkorb als TStringList, das ist deutlich einfacher. :idea:
cu
Narses
Fredy - Mo 18.05.09 22:54
du hast nicht zufällig eine Idee wie ich das hinbekomme mit meiner bisherigen Ausgangsposition ?
Narses - Mo 18.05.09 23:06
Moin!
Delphi-Quelltext
1: 2:
| type WarenkorbFile = file of ShortString; |
Aber ich fürchte, du hast nicht den leisesten Plan, was hier eigentlich läuft... :(
cu
Narses
Fredy - Mo 18.05.09 23:10
da hast du Recht aber ich möchte es irgendwie heute noch zum laufen bringen =)
gleiche Fehlermeldung immer noch:
Fehlermeldung: [Error] Unit19.pas(238): Incompatible types: 'WarenkorbRecord' and 'TCaption'
Delphi-Quelltext
1:
| Warenkorbartikel[High(Warenkorbartikel)] := cbArtikel.Text; |
hat jemand eine Idee bin gerade ein bisschen am Verzweifeln ?
Regan - Mo 18.05.09 23:28
Da müssen wir uns eben mal etwas sputen:
Delphi-Quelltext
1:
| Warenkorbartikel : array of ShortString; |
Du musst das so wählen, wenn du diese Zuweisung machen willst. Ich bezweifle aber, dass du die Grundlagen fürs Weiterprogrammieren hast :|
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!