AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

alle ListBox-Einträge erscheinen doppelt!

Ein Thema von Johanna88 · begonnen am 15. Okt 2006 · letzter Beitrag vom 15. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
Johanna88

Registriert seit: 15. Okt 2006
9 Beiträge
 
#1

alle ListBox-Einträge erscheinen doppelt!

  Alt 15. Okt 2006, 18:56
Hallo zusammen.

Ich möchte für eine Listbox Einträge aus einer anderen Datei einlesen und diese einfügen, wenn sie eine gewisse Bedingung erfüllen.
Dies klappt auch bestens, aber alle Einträge werden doppelt aufgelistet (also etwa so: a b c a b c).

Kann mir jemand sagen was ich tun muss, resp. was ich falsch mache?
Ich füge sie über
ListBox1.Items.Add(programm[i].name);

ein.

Habe es auch schon mit einer RadioGroup versucht, aber da tauchte das gleiche Problem auf.

Wäre froh wenn mir jemand helfen könnte!!!

Gruss Johanna
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#2

Re: alle ListBox-Einträge erscheinen doppelt!

  Alt 15. Okt 2006, 18:59
Hallo Johanna,

zeig doch mal bitte deinen Code um festzustellen,wo der fehler ist.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Johanna88

Registriert seit: 15. Okt 2006
9 Beiträge
 
#3

Re: alle ListBox-Einträge erscheinen doppelt!

  Alt 15. Okt 2006, 19:29
Hm... Okay, wird ein bisschen schwierig zum erklären, aber ich versuch es mal...

Delphi-Quellcode:
while i < 11 do begin
  if programm[i].rechenart = rechenart then
    begin
    RadioGroup2.Items.Add(programm[i].name);
    j := j + 1;
    end;
  i := i + 1;
end;
In einer anderen Datei, die vorher eingefügt wurde, habe ich ein Array von einem Record. Wenn die Eigenschaft "rechenart" mit einer vorher eingegebenen rechenart überstimmt, dann soll der Name dieses Records in die RadioGroup (oder auch ListBox) eingefügt werden, ansonsten soll nichts geschehen.

Ich hoffe es ist einigermassen verständlich...

Gruss
Johanna
  Mit Zitat antworten Zitat
Benutzerbild von furby
furby

Registriert seit: 15. Sep 2005
Ort: Braunschweig
37 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: alle ListBox-Einträge erscheinen doppelt!

  Alt 15. Okt 2006, 20:06
Huhu,
du verwendest doch gar keine listbox bei diesem code, oder habe ich jetzt irgendwas falsch verstanden?
Aber das ändert ja nichts an deinem fehler. Ähm wenn ich mir deinen source so anschaue, dann frage ich mich wofuer du j verwendest. Der restliche code dürfte eigentlich nicht für den Fehler verantwortlich sein. Bist du dir sicher, dass der Fehler an der Stelle liegt?
Fabian K
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#5

Re: alle ListBox-Einträge erscheinen doppelt!

  Alt 15. Okt 2006, 20:54
Hast du dir im Degubmodus schonmal dein Record-Array angeschaut? Sicher, daß dort nicht schon alles zweimal steht?
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#6

Re: alle ListBox-Einträge erscheinen doppelt!

  Alt 15. Okt 2006, 20:59
Zitat:
du verwendest doch gar keine listbox bei diesem code, oder habe ich jetzt irgendwas falsch verstanden?
--> sie hat doch explizit erwähnt, dass sie auch eine radiogroup zum testen verwendet hat

@Johanna88: wie wäre es mit ein bissl mehr code und was bezweckst du mit diesem?
  Mit Zitat antworten Zitat
Benutzerbild von furby
furby

Registriert seit: 15. Sep 2005
Ort: Braunschweig
37 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: alle ListBox-Einträge erscheinen doppelt!

  Alt 15. Okt 2006, 21:08
Zitat:
--> sie hat doch explizit erwähnt, dass sie auch eine radiogroup zum testen verwendet hat Smile
Upps sorry. hab ich überlesen
Fabian K
  Mit Zitat antworten Zitat
Johanna88

Registriert seit: 15. Okt 2006
9 Beiträge
 
#8

Re: alle ListBox-Einträge erscheinen doppelt!

  Alt 15. Okt 2006, 21:22
Habe es zuerst seeeehr lange mit einer ListBox versucht, und weil es nicht funktioniert hat dann mit einer RadioGroup, aber das Problem war immer das selbe.

Das Record habe ich so definiert (vor dem Variabel-Teil im interface (<- so nennt man das doch?))
Delphi-Quellcode:
type TDb = record
                rechenart, variante: integer;
                name: string;
                end;
Und die "Datenbank" ist eine inc-datei, die unmittelbar vor dieser schlaufe eingefügt wurde.
Sie sieht so aus:
Delphi-Quellcode:
with programm[1] do begin
  rechenart := 1;
  variante := 1;
  name := '...bis 100';
  end;

with programm[2] do begin
  rechenart := 2;
  variante := 1;
  name := '...bis 100';
  end;

with programm[3] do begin
  rechenart := 3;
  variante := 1;
  name := 'Kleines 1x1';
  end;

with programm[4] do begin
  rechenart := 4;
  variante := 1;
  name := 'Kleines 1x1';
  end;

with programm[5] do begin
  rechenart := 1;
  variante := 2;
  name := '..bis 1000';
  end;

with programm[6] do begin
  rechenart := 2;
  variante := 2;
  name := '...bis 1000';
  end;

with programm[7] do begin
  rechenart := 3;
  variante := 2;
  name := 'Mittleres 1x1';
  end;

with programm[8] do begin
  rechenart := 4;
  variante := 2;
  name := 'Mittleres 1x1';
  end;

with programm[9] do begin
  rechenart := 3;
  variante := 3;
  name := 'Grosses 1x1';
  end;

with programm[10] do begin
  rechenart := 4;
  variante := 3;
  name := 'Grosses 1x1';
  end;
Vielleicht zur Erläuterung: Ich bin daran, ein Rechnungsübungsprogramm für Primarschüler zu machen. Die Rechenart (1-4) ist Addition, Subtraktion, Multiplikation und Division. Jede Rechenart hat verschiedene Varianten, (1-???), also bspw. "Kleines 1x1" (= Variante 1) und "Mittleres 1x1" (= Variante 2).

Und die ganze Prozedur sieht so aus:
Delphi-Quellcode:
procedure TForm2.FormPaint(Sender: TObject);
var i: integer;
begin
Label2.Caption := rechenartStr;
Label2.Font.Color := Farbe;
anzAufg := 10;

if rechenart = 0 then ShowMessage('Wähle eine Rechenart!');
// RadioGroup mit Auswahlmöglichkeiten füllen
{$I db.inc}
i := 1;
j := 0;
while i < 11 do begin
  if programm[i].rechenart = rechenart then
    begin
    RadioGroup2.Items.Add(programm[i].name);
    j := j + 1;
    end;
  i := i + 1;
end;
Mir ist gerade aufgefallen, dass ich im interface, eine Variable i eingeführt habe und in der Prozedur ebenfalls. Könnte das Problem damit zusammenhangen?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#9

Re: alle ListBox-Einträge erscheinen doppelt!

  Alt 15. Okt 2006, 21:36
Delphi-Quellcode:
procedure TForm2.FormPaint(Sender: TObject);
var i: integer;
begin
Label2.Caption := rechenartStr;
Label2.Font.Color := Farbe;
anzAufg := 10;

if rechenart = 0 then ShowMessage('Wähle eine Rechenart!');
// RadioGroup mit Auswahlmöglichkeiten füllen
{$I db.inc}
i := 1;
j := 0;
while i < 11 do begin
  if programm[i].rechenart = rechenart then
    begin
    RadioGroup2.Items.Add(programm[i].name);
    j := j + 1;
    end;
  i := i + 1;
end;
warum so umständlich?

Delphi-Quellcode:
procedure TForm2.FormPaint(Sender: TObject);
var i: integer;
begin
Label2.Caption := rechenartStr;
Label2.Font.Color := Farbe;
anzAufg := 10;

if rechenart = 0 then ShowMessage('Wähle eine Rechenart!');
// RadioGroup mit Auswahlmöglichkeiten füllen
{$I db.inc}
i := 1;
j := 0;

{ Imo passiert hier dein Fehler: Du fügst bei jedem Repaint wieder Items hinzu: Lösen lässt sich das ganz einfach: }
radiogroup2.items.clear;

for i := 1 to 10 do
  if programm[i].rechenart = rechenart then
    RadioGroup2.Items.Add(programm[i].name);
end;
Übrigens sollte es mit einer globalen Varaible i eigentlich keine Probleme geben.
  Mit Zitat antworten Zitat
Johanna88

Registriert seit: 15. Okt 2006
9 Beiträge
 
#10

Re: alle ListBox-Einträge erscheinen doppelt!

  Alt 15. Okt 2006, 22:11
Vielen Dank!

Super! Jetzt klappt es!

Ich versteh nur noch nicht genau wieso. Ich habe doch das Formular nur einmal gezeichnet.

Oder wäre es sinnvoller, wenn ich es mit einem anderen Ereignis verknüpft hätte? Wenn ja, welches?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz