Autor Beitrag
boardmarker1
Hält's aus hier
Beiträge: 4

Win XP Home
Borland Delphi 2005 Personal
BeitragVerfasst: Di 09.12.08 20:55 
Hallo Leute,
ich hab ein Problem mit meinem Algorithmus. Dieser soll aus einer Listbox jedes 755. Element in die Combobox 1 eintragen, und jedes 2. in die ComboBox 2. Direkt unter dem Inhalt für CB2 steht ein drittes Element, dass im Editfeld erscheinen soll. Also sieht die Datenbank wie folgt aus:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Hebe-Schiebe-Tür
2120 x 2025
1967
2120 x 2150
2004
2370 x 2025
2028
...


Aber irgendwie scheint bei meiner Berechnung etwas schief zu laufen. Mit dem ersten Datensatz funktioniert es, wenn man nur die erste Größe wählt. Wenn ich aber z.B. das 2. 755'Element wähle, bekommen ich den Fehler, dass das Listenmaximus über schritten wurde.
Vielleicht sieht von euch ja einer der (die) Fehler.

ausblenden 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:
25:
26:
var Zeile:integer;

procedure TForm1.ComboBox1Change(Sender: TObject);
var i:integer;
begin
        ComboBox2.Clear;
        Zeile := (ComboBox1.ItemIndex * 755);
        for i := (Zeile div 2to (Zeile+376do
          //if form2.ListBox1.Items[2*i+1] <> chr(13) then
            Form1.ComboBox2.Items.Add(form2.ListBox1.Items[2*(i)+1]); end;

procedure TForm1.ComboBox1Drop(Sender: TObject);
  var i:integer;
  name:string;
begin
  Anzahl := form2.ListBox1.Items.Count div 755;
  form1.ComboBox1.Clear;
  for i := 0 to Anzahl-1 do
           Form1.ComboBox1.Items.Add(form2.ListBox1.Items[i*755]);
           end;

procedure TForm1.ComboBox2Change(Sender: TObject);
var j:integer;
begin
j:=ComboBox2.ItemIndex;
Edit1.Text:=form2.listbox1.Items[j+Zeile+2];end;

Danke schon mal im voraus (allein schon fürs durchlesen :wink: )
Hybrid666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26



BeitragVerfasst: Mi 10.12.08 09:55 
also im vorraus mal 2 tipps:
1. gewöhne dir brav einen guten programmierstil im sinne von sinnvollem einrücken an ;)
2. Gib deinen Komponenten aussagekräftige namen

glaub mir, damit wird alles schonmal übersichlicher ;)

also das erste was ich sehe ist:
ausblenden Delphi-Quelltext
1:
2:
3:
  for i := 0 to Anzahl-1 do
    Form1.ComboBox1.Items.Add(form2.ListBox1.Items[i*755]);
  end;


willst du generell das erste element auch einfügen? weil deine schleife bei 0 anfängt, ergibt deine multiplikation im ersten schritt 0, das heißt, du fügst item [0] ein. Ist das beabsichtigt?

Desweiteren wären mal ein paar mehr infos nett, also eine genauere beschreibung.
Ich hab keine ahnung was du nun genau machen willst, wann soll was passieren? was genau soll passieren? An welcher stelle im code tritt denn der fehler auf? was ist die genaue fehlermeldung vom compiler? Weil aus deinem code geht ein sehr diffuses programm hervor ;) oder ich bin einfach nur zu blöd, in dem fall entschuldigung ^^
boardmarker1 Threadstarter
Hält's aus hier
Beiträge: 4

Win XP Home
Borland Delphi 2005 Personal
BeitragVerfasst: Mi 10.12.08 17:15 
Also, das Programm holt aus einer externen Datei die Daten und trägt diese Zeilenweise in die Listbox ein. In der ComboBox1 möchte ich nun den Fenstertyp auswählen. Dies entspricht jedem 755. Element in der Liste, wobei das Element an Position 0 das erste ist (demnach ist es gewollt). Wähle ich nun einen Typ aus, so soll ich der ComboBox2 die Größe des Fensters auswählbar sein. Dies sind die darauf folgenden 377 Elemente, wobei jedoch nach jedem dieser Elemente der dazugehörige Preis niedergeschrieben ist. Der Preis soll nach dem Auswählen einer Größe im Edit1 erscheinen.
Ich hoffe, so wird die Funktion des Programms klarer.

Nun, die Fenstertypen werden ordnungsgemäß ich die ComboBox1 eingetragen. Auch wenn ich den ersten Typ anwähle, füllt sich die ComboBox2 wie gedacht.
Doch nun tritt folgender Fehler auf:
Wähle ich das erste Fenster und die erste Größe der Liste, so erscheint der richtige Preis in edit1, wähle ich jedoch eine andere Größe, zeigt das Edit falsche Werte, bzw. es kommen verschobene Werte oder auch Größen aus der Liste.

Wähle ich einen anderen Typ von Fenster, bekomme ich die Fehlermeldung, dass das Listenmaximum überschritten wurde. Das Problem bei diesem Fehler müsste demnach bei der procedure für das Füllen der Combo2 stecken.

Entschuldigung für den Programmierstil, aber ich hatte zu Beginn nicht damit gerechnet, dass ich Hilfe benötigen würde und mit dem Kommentieren hatte ich noch nicht begonnen. Ich hoffe, dass dir meine Erklärung etwas weiterhilft. :wink:
XUDO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win-98SE, Win-XP/1
Delphi-7P, Turbo-Pascal-6
BeitragVerfasst: Di 16.12.08 19:05 
Hallo boardmarker1,

0 ----> 1
1 ----> 2
2
3 ----> 2
...
753 ----> 2 (das sind 754 Positionen/Zeilen)

754 ----> 1 (zweite Gruppe beginnt mit 754)
755 ----> 2
756
757 ----> 2

Du wirst also wegen der Position 0 als erster
anders rechnen müssen.
Wenn zeitlich reicht, komme ich wieder,
ansonsten schon mal viel Erfolg,
XUDO
XUDO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win-98SE, Win-XP/1
Delphi-7P, Turbo-Pascal-6
BeitragVerfasst: Di 16.12.08 19:45 
Xudo noch einmal:
wenn´s klappt, findest Du etwas in der Anlage.
Du kannst in den beiden Listboxen - war zu faul
für eine Combo - das Prinzip finden; im txt ebenso.
Noch einmal, viel Erfolg
XUDO
Einloggen, um Attachments anzusehen!
XUDO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win-98SE, Win-XP/1
Delphi-7P, Turbo-Pascal-6
BeitragVerfasst: Mi 17.12.08 17:21 
Und nun etwas ausführlicher, boardmarker1,
vor allem wegen die im Anfang geraden Zeilennummern (jede zweite),
die dann ab 1510 (2*755) in ungerade Nummern wechseln.
Ich denke, du kommst mit den Kommentaren im quelltext zurecht.
Gruß XUDO
Einloggen, um Attachments anzusehen!
XUDO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win-98SE, Win-XP/1
Delphi-7P, Turbo-Pascal-6
BeitragVerfasst: Mi 17.12.08 17:23 
- muß natürlich heißen: wegen der im Anfang -
hatte zunächst eine andere Fromulierung...