![]() |
Delphi-Version: 5
Problem mit Record
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo DP'ler,
ich habe mal wieder eine Frage an euch. Ich habe versucht mich mit Records auseinanderzusetzen nur so ganz durchblicken tue ich anscheinend noch nicht, ansonsten würde ich jetzt nicht dieses Thema eröffnen und nach Rat zu fragen :P. Wie das Programm funktionieren sollte : Man trägt einen Teamnamen ein sowie die Zeit die das Team gebraucht hat. Das Ganze wird dann in eine Listbox eingetragen. An dieser Stelle sollte dann von jedem Eintrag ein Record erstellt werden um dann oben in einem Label das Gewinnerteam mit der kürzesten Zeit auszugeben. Code :
Code:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls; type TForm1 = class(TForm) GroupBox1: TGroupBox; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Button1: TButton; Panel1: TPanel; GroupBox2: TGroupBox; Label3: TLabel; Label4: TLabel; ListBox1: TListBox; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; type liste:Record zeit:real; end; var Form1: TForm1; teamname: string; zeit: real; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin try teamname := Edit1.Text; zeit := StrToFloat(Edit2.Text); Listbox1.Items.add('Team ' + teamname + ' Zeit: ' + FloatToStr(zeit)); except ShowMessage('Eingabe ist nicht korrekt! Bitte korrigieren!'); end; end; procedure TForm1.Timer1Timer(Sender: TObject); var t:integer; begin For t:=0 to Listbox1.Items.count-1 do Liste.Zeit:=ListBox1.Items[t]; end; end. |
AW: Problem mit Record
Hallo,
ein Record kannst Du als Datensatz auffassen, Er bringt mehrere Eigenschaften einer Sache zusammen. Wie bei Dir eben Teamname und Zeit.
Delphi-Quellcode:
Wenn Du mehrere Records in einer Liste haben möchtest kannst Du
type
TTeamDaten = record name : ansiString; zeit : double; end; a) ein statisches Array nehmen b) ein dynamisches Array c) eine TList d) eine eigene verkette Liste anfertigen. Grüße Klaus |
AW: Problem mit Record
Wenn du mehrere Daten an ein TStrings hänge willst, wobei TListBox Items sind TStrings, dann würde ich es mit Objekten machen, denn da kannst an jedes Item Daten anhängen wie du willst.
Hier ein kleines Beispiel. Es hängt nur ein Datum als Beispiel ran, aber du kannst es erweitern wie du willst.
Delphi-Quellcode:
Mit gewissem Aufwand geht es auch mit Records.
type
TInfo = class //Beispiel-Klasse DT: TDateTime; end; procedure TForm1.Button1Click(Sender: TObject); var Info: TInfo; p: Integer; begin with ListBox1 do begin Info := TInfo.Create; //Beispiel-Objekt Erstellen Info.DT := Now; p := Items.AddObject('Datum und Zeit', Info); //Zuweisen if p > -1 then ShowMessage(Format('Aktuelle Zeit im Item %d als Objekt gespeichert.', [p])); end; end; procedure TForm1.ListBox1Click(Sender: TObject); var DT: TDateTime; Info: TInfo; begin with ListBox1 do begin if Count = 0 then Exit; if ItemIndex = -1 then Exit; if not (Items.Objects[ItemIndex] is TInfo) then Exit; Info := TInfo(Items.Objects[ItemIndex]); //Auslesen DT := Info.DT; ShowMessage('Im Objekt gespeicherte Zeit: ' + TimeToStr(DT)); end; end; procedure TForm1.FormDestroy(Sender: TObject); var i: Integer; Info: TInfo; begin with ListBox1 do //Objekte müssen separat freigegeben werden for i := 0 to Items.Count - 1 do begin Info := TInfo(Items.Objects[i]); //Freigeben Info.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 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