oops ... das mit dem Datei öffnen hatte ich ja glatt übersehen
so .. hier aber jetzt die Lösung des Problems ....
Der Trick ist ... das man die Werte der Listbox extra nach int Konvertiert .. s. Unten !
Delphi-Quellcode:
{-----------------------------------------------------------------------------
Procedure: Addmyitem
Arguments: const AItem: string; const AColor: TColor
Hier werden neue Einträge in die Listbox durchgeführt.
Es werden auch die Berechnung der "Punkt" und deren Ausgabe
erledigt.
-----------------------------------------------------------------------------}
procedure TForm1.Addmyitem(const AItem: string; const AColor: TColor);
var
x, i, y, Counter : Integer;
cg, cb : double;
counte : array[0..409] of Integer;
//Dynamisches Integer Array
iArray : array of integer;
begin
Anzeige.Items.InsertObject(0, AItem, TObject(AColor));
DoubleBuffered := True;
cg := (Form2.SpinEdit1.Value);
cb := (Form2.SpinEdit2.Value);
//werte von Listbox Anzeige in Array of Integer konvertieren
for i := 0 to Anzeige.Count - 1 do
begin
//Array vergrößern
SetLength(iArray, i + 1);
//String to Int wndeln
iArray[i] := StrToInt(Anzeige.Items[i]);
end;
// Alle "Counter" auf 0 setzen
Counter := 0;
ZeroMemory(@Counte, SizeOf(counte));
// Hier beginnen die Berechnungen
// Jedes Item der Listbox durchlaufen - Jetzt iArray
for x := 0 to High(iArray) do
begin
if iArray[x] in [1, 3, 10] then
Inc(Counter);
if iArray[x] in [6] then
Counter := 0;
// Mit jedem SetOfByte vergleichen
for y := 0 to 409 do
begin
//hier mit dem Int Array arbeiten
if iArray[x] in werte[y] then
Counte[y] := 0
else
Inc(Counte[y]);
end;
end;
// Ab hier kommt die Ausgabe der Berechnungen
Label1.Caption := IntToStr(Counter);
if counter = cg then
begin
Image2.Picture.Assign(bild2); // Bilid zuweisen
label1.font.color := CLblack
end
else
begin
// Wass passiert wenn keiner von beiden werten zutrifft?
// Dann könnte diese If-Abfrage nämlich weg. Entweder ist counter = cg
// oder er ist es nicht.
if counter = cb then
begin
Image2.Picture.Assign(bild1);
label1.font.color := CLwhite;
end;
end;
for x := 0 to 409 do
begin
(FindComponent('Label' + IntToStr(x + 1)) as TLabel).Caption := IntToStr(Counte[x]);
end;
//Array freigeben
iArray := nil;
end;