![]() |
Re: Array vom Inhalt einer Listbox
Hallo,
die Einträge einer ListBox sind zahlenmäßig nicht festgelegt. Wenn dann ein Array als Speicherstruktur herhalten soll, dann ist da ein dynamisches Array sehr vorteilhaft:
Delphi-Quellcode:
Grüße vom marabu
function StrToTimeArray(s: TStrings): TDoubleDynArray;
var index: Integer; begin SetLength(Result, s.Count); for index := Low(Result) to High(Result) do Result[index] := StrToTime(s[index]); end; procedure TDemoForm.ButtonClick(Sender: TObject); var dda: TDoubleDynArray; total: Double; begin dda := StrToTimeArray(RichEdit.Lines); total := Math.Sum(Copy(dda, 0, 3)); ShowMessage(TimeToStr(total)); end; |
Re: Array vom Inhalt einer Listbox
Ich habe es jetzt so:
Delphi-Quellcode:
zeiten:array[1..300] of TDateTime;
Delphi-Quellcode:
Uns so geht es auch!
for i:=1 to listbox2.Count-1 do
begin zeiten[i]:=strtotime(listbox2.Items[i-1]); end; Zitat:
Danke für die Mühe!!!! Gruß! |
Re: Array vom Inhalt einer Listbox
Siehe #11 :-D (marabu war schneller)
|
Re: Array vom Inhalt einer Listbox
Wie funktioniert das von marabu!? Kann dort mit vielen Befehlen nicht viel anfangen!
Gibt es nichts einfacheres? Wo man z.B. die obere Grenze eines Arrays mit listbox1.count-1 festlegen kann. Gruß! |
Re: Array vom Inhalt einer Listbox
Die Größe legst Du mit SetLength() fest. Ansonsten sag doch mal, was Du nicht verstehst.
|
Re: Array vom Inhalt einer Listbox
Ich verstehe nicht was die Function macht! Wo liest sie die Daten aus der Listbox ein?
Und in der Procedure:
Delphi-Quellcode:
Was wird da zusammen addiert?
dda := StrToTimeArray(RichEdit.Lines);
total := Math.Sum(Copy(dda, 0, 3)); Kann ich das nicht einfach dann so machen:
Delphi-Quellcode:
????
SetLength(listbox1.count-1)
Gruß! |
Re: Array vom Inhalt einer Listbox
Ich habe Dir mal ein sinnfreies Beispiel erstellt:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type //Dynamisches Array als Datentyp definieren TDynArray = array of TDateTime; TForm1 = class(TForm) ListBox1: TListBox; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } //Als Objektvariable definieren DynArray: TDynArray; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin //Benötigte Größe setzen SetLength(DynArray,ListBox1.Items.Count); //Array füllen for i := 0 to ListBox1.Items.Count - 1 do DynArray[i] := StrToTime(ListBox1.Items[i]); end; end. |
Re: Array vom Inhalt einer Listbox
Hallo,
RichEdit.Lines hat den gleichen Typ wie ListBox.Items - man kann die beiden also austauschen. Freundliche Grüße |
Re: Array vom Inhalt einer Listbox
Hi marabu,
falls Du mich damit meinst: das ist mir schon bekannt, aber ich wollte es für den Fragesteller etwas einfacher machen. :wink: |
Re: Array vom Inhalt einer Listbox
Habe einen Fehler: "Im Projekt ist eine Exception der Klasse EAccesViolation aufgetreten. Meldung: Zugriffsverletzung bei Adresse...."
Und markiert wird dann anschließend diese Zeile hier:
Delphi-Quellcode:
Gruß!
DynArray[i] := StrToTime(ListBox2.Items[i]);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 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 by Thomas Breitkreuz