![]() |
aus funktion herraus auf listbox zugreifen
Hey Leute, mich plagt zur Zeit ein Problem und selbst bin ich mir nicht sicher woran das liegen kann...
Ich habe ein Auswerteprogramm für meinen Verein geschrieben, kurz zur Funktion die mir Sorgen macht: Durch ein Enter in einer Edit-Box wird mit Hilfe dieser Funktion
Delphi-Quellcode:
ein Zeitwert in eine Listbox eingetragen.
procedure Tfrm_main.edt_zeitKeyPress(Sender: TObject; var Key: Char);
var minuten : string; sekunden : string; millisekunden : string; fehlersekunden : string; begin if ord(key) = 13 then //Enter Taste begin begin minuten := copy(edt_zeit.Text,1,1); sekunden := copy(edt_zeit.Text,2,2); millisekunden := copy(edt_zeit.Text,4,2); fehlersekunden := copy(edt_zeit.Text,7,2); lbox_zeitwert.Items.Strings[lbox_fahrername.ItemIndex] := minuten+'.'+sekunden+'.'+millisekunden+' '+fehlersekunden; lbox_fahrername.ItemIndex := lbox_fahrername.ItemIndex+1; edt_zeit.Clear; end; end; end; So, da ich nun die Daten der Listbox auswerten möchte mache ich dies mit folgender Funktion:
Delphi-Quellcode:
Nun bekomme ich in der Zeile
procedure zeiteintragen(typ:integer;fahreranzahl:integer);
//Eintragen der Gesamtzeit(mit FS!) und der Fehlersekunden in Array //Type 1: 1. Lauf, Type 2: 2. Lauf var i : integer; begin case typ of 1: begin for i := 1 to fahreranzahl do begin a_wertung[i,2] := zeitpicker(frm_main.lbox_zeitwert.Items.Strings[i-1]); a_wertung[i,5] := copy(frm_main.lbox_zeitwert.Items.Strings[i-1],9,2); end; end; 2: begin for i := 1 to fahreranzahl do begin a_wertung[i,3] := zeitpicker(frm_main.lbox_zeitwert.Items.Strings[i-1]); a_wertung[i,6] := copy(frm_main.lbox_zeitwert.Items.Strings[i-1],9,2); end; end; end; end;
Delphi-Quellcode:
Den Fehler, daß der Listenindex das Maximum (0) überschreitet, obwohl sich in der Listbox die Zeitwerte befinden.
a_wertung[i,2] := zeitpicker(frm_main.lbox_zeitwert.Items.Strings[i-1]);
Kann es sein sein das ich von einer Funktion heraus nicht ohne weiteres auf die Daten zugreifen kann? Ich bräuchte dringend Hilfe, da ich das Programm in ca. einer Woche bräuchte. Wäre sehr dankbar für jeden Tip. Sebastian |
Re: aus funktion herraus auf listbox zugreifen
Hey, herzlich Willkommen in der DP :dp:
Was ist a_wertung den Überhaupt? Eine ListBox? Eine Variable? Mfg |
Re: aus funktion herraus auf listbox zugreifen
Du solltest dir besser mal TSrings.Add() ansehen. So wie zu die Einträge hinzufügst, gehe ich fast davon aus, dass diese wild in unreserviertem Speicher landen.
|
Re: aus funktion herraus auf listbox zugreifen
Du solltest alle procedures / functions der Klasse / dem Formular (Tfrm_main) zuweisen.
Sonst können sie nämlich nicht auf Elemente des Forms zugreifen.
Delphi-Quellcode:
...
public MeineProcedure(...); ... ... Tfrm_main.MeineProcedure(...); begin end; ... ... |
Re: aus funktion herraus auf listbox zugreifen
Können sie schon, wenn sie voll qualifiziert werden, wie es der TE auch gemacht hat. Dass das aber von Stil und sauberer OOP so weit entfernt ist wie möglich, macht es mehr als änderungswürdig, ja.
Edit: Das ist hier allerdings nicht die Ursache des Fehlers. |
Re: aus funktion herraus auf listbox zugreifen
Zitat:
Als Anf$nger sollte man sich gleich einen richtigen Stil aneignen. Dass dies der Fehler ist, hab ich auch nicht behauptet. |
Re: aus funktion herraus auf listbox zugreifen
Zitat:
Somit muss das Array erst mal initialisiert werden. Ausserdem ist "a_wertung" kein allzu toller Name. Besser wäre hier schon WertungsArray. In Delphi setzt man den Typ einer Variablen nicht vorne an. |
Re: aus funktion herraus auf listbox zugreifen
Zitat:
|
Re: aus funktion herraus auf listbox zugreifen
danke erst mal für eure tips, ich hab es nun auf folgende art und weise gelöst - hab die Modularisierung einfach mal sein lassen und meine funktionen wieder schön in die onclick routine des "lauf beenden" buttons geworfen... fragt mich nicht warum, aber so geht es...
leider hab ich für die tiefgründige verbesserung keine zeit mehr, das programm sollte ja schon längst fertig sein :roll: zum stil: ja, mein stil ist versaut, aber nach mittlerweile 5 jahren delphi kann ich daran auch nichts mehr ändern, ich stelle die bezeichner immer schön in Präfixnotation vorran und danke wegen des tipps wegen Add - das war wohl eher ein ganz dummer flüchtigkeitsfehler die listbox so zu befüllen, gebracht hatte es trotzdem nichts, nach der änderung kam der gleiche fehler... vielen dank für eure hilfe |
Re: aus funktion herraus auf listbox zugreifen
Dann wäre die Frage, ob "fahreranzahl" = "ListBox.Items.Count" ist. Den Aufruf zeigst du oben ja leider nicht ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz