![]() |
Zeit, Datum überwachen
Ich habe vor, eine Art Terminplaner mit Wecker zu machen.
Ich speichere jeden Termin in einer extra Textdatei, die Namen dieser Textdateien sind in einer Listbox eingetragen. Nun brauch ich eine Idee, wie ich am besten einen abgleich machen kann, ob das gewünschte Datum, ... erreicht ist. Ich dachte an ein array, wo ich die Taten reinschreibe und dann mit nem Timer kontrollieren lasse, ob es schon so weit ist. Jedoch kenn ich bisher nur statische arrays und damit wäre die liste la beschränkt, dynamische arrays habe ich nicht wirklich was im Forum gefunden. Vl. gibt es ja auch eine ganz andere Variante, um das zu realisieren. Ich freue mich über jede anregung :stupid: |
Re: Zeit, Datum überwachen
mit dynamischen arrays zuarbeiten ist eigentlich auch ganz einfach. du setzt halt nur die länge zur laufzeit mit setlength(...).
frage bei deinem vorhaben ist natürlich: wieviele termine willst du denn verwalten? |
Re: Zeit, Datum überwachen
Wegen der Anzahl der Termine: das sollte 100% variabel sein, also so viel, wie der user will.
Wenn das mit den dynamischen arrays so geht, könnte man evtl. immer die anzahl der Termine nehmen (kann man ja aus der listbox einlesen). Ich bräuchte nur mal ein kurzes Bsp, weil ich kenne arrays von der Deklaration her nur, indem man alles gleich festschreibt:
Delphi-Quellcode:
und dann wenn es möglich wäre auch noch, wie man dann die länge ändert :sharkylinchen:
var
Beistpeil: array[1..10,1..2] of string; |
Re: Zeit, Datum überwachen
Es würde sich u.U. auch eine Datenbank anbieten.
|
Re: Zeit, Datum überwachen
Zitat:
|
Re: Zeit, Datum überwachen
hier wird verdeutlicht wie man dynamisch die länge des arrays festlegt.
gibt aber auch genug beispiele im forum und im netz dazu.
Delphi-Quellcode:
unit frmMain;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm3 = class(TForm) btnAdd: TButton; btnShowAll: TButton; procedure btnAddClick(Sender: TObject); procedure btnShowAllClick(Sender: TObject); private { Private declarations } FAppointmentArray: Array of String; procedure AddAppointment(const AValue: String); public { Public declarations } end; var Form3: TForm3; implementation {$R *.dfm} procedure TForm3.AddAppointment(const AValue: String); begin // die Länge neu festsetzen SetLength(FAppointmentArray, Length(FAppointmentArray)+1); // Wert zuweisen FAppointmentArray[High(FAppointmentArray)] := AValue; end; procedure TForm3.btnAddClick(Sender: TObject); begin AddAppointment('Wert Nummer ' + IntToStr(Length(FAppointmentArray))); end; procedure TForm3.btnShowAllClick(Sender: TObject); var i: Integer; ASL: TStringlist; begin ASL := TStringlist.Create(); try for i := 0 to high(FAppointmentArray) do begin ASL.Add(FAppointmentArray[i]); end; ShowMessage(ASL.Text); finally ASL.Free(); end; end; end. |
Re: Zeit, Datum überwachen
Die Idee, ein dynamisches Array zu benutzen, ist für den ersten Einstieg ganz gut. Aber eigentlich sind dynamische Arrays dafür nicht wirklich geeignet. Jedesmal, wenn Du das Array verkleinerst oder vergrößerst, wird der gesamte Inhalt des Array vom bisherigen Speicherplatz zum neuen Speicherplatz rüberkopiert.
Stattdessen benutzt man besser eine Liste. Diese verwaltet Ihren Speicherplatz selbst und wird größer und kleiner, je nachdem wieviele Elemente Du hinzufügst oder löschst. Zum Hinzufügen gibt es die Funktion (Methode) "Add", zum Löschen "Delete" oder "Remove". Und das, was Du da hinzufügst, muss ein Objekt sein. So ein Objekt ist eigentlich nichts anderes als ein Record, nur mit ein paar mehr Möglichkeiten. Siehe Online-Hilfe. Versuche dich al, an folgendes heranzutasten: Du definierst Dir eine Klasse, die jeweils einen Termin verwaltet:
Delphi-Quellcode:
(Hinweis: Eigentlich ist das getrennte Speichern von Datum und Uhrzeit Schwachsinn, weil es auch den Datentype TDateTime gibt, der in einer Variablen beides abspeichern kann. Aber zur Verdeutlichung hier mal getrennt)
type
TTermin = class(TObject) Datum: TDate; Uhrzeit: TTime; Titel: String; Aktiv: Boolean; end; Wenn Du so eine Klasse hast, kannst Du Deine Termin in einer TObjectList speichern:
Delphi-Quellcode:
und später im Programm musst Du im Programm diese ObjectList erzeugen und beim Programmende wieder löschen:
var
Termine: TObjectList; Beim Programmstart:
Delphi-Quellcode:
Beim Programmende:
Termine := TObjectList.Create;
Delphi-Quellcode:
Die einzelnen Termine legst Du so an:
FreeAndNil(Termine); // gibt den genutzten Speicher wieder frei und löscht die Terminliste
Delphi-Quellcode:
und Zugreifen kannst Du auf diese Liste so:
var termin: TTermin;
begin termin := TTermin.Create; termin.Datum := ... termin.Uhrzeit := ... termin.Titel := ... Termine.Add(termin);
Delphi-Quellcode:
So, zum Thema "Objekte" etc sollte es genügend Tutorials und Hilfen hier geben, schau dich einfach mal um.
var i: Integer;
t: TTermin; begin for i:=0 to Termine.Count-1 do begin t := TTermin(Termine[i]); ... // hier irgendwas mit dem Termin machen end; |
Re: Zeit, Datum überwachen
Hey, das ist ja eine Super BEschreibung, ich werd es gleich mal probieren :bounce1:
danke!!! [Edit1] bei TTermin = class(TObject) gibt es probleme: ": erwardet, aber = gefunen" wenn ich da := hinmache kommt "ein Bezeicher erwardet, aber : gefunden" wenn ich nur : hinmache kommt"ein Bezeicher erwardet, aber class gefunden" ich hab das an folgender Stelle:
Delphi-Quellcode:
type
TFHaupt = class(TForm) // mein Hauptformular TTermin = class(TObject) Datum: TDate; ... |
Re: Zeit, Datum überwachen
Und hier gibt es ein ganzen kurzes Tutorial dazu von mir:
![]() Und hier nochmal eine Demo in Form eine Memory-Spieles: ![]() |
Re: Zeit, Datum überwachen
hmm, das Tutorial ist gut, aber bei dem aktuellem Problem hilft mir das nicht wirklich.
ich weiß nicht, wo ich das TTermin = class(TObject)... hinschreiben soll, weil wenn man das Unter, über, ... das Tform macht, dann gibt es immer Probleme [Edit] Hab das jetzte nochmal gemacht, ging auf einmal :) aber jetzt kennt der das TObjektlist nicht, also undef. Bezeichner //Edit2 Habe jetzt Einfach TList genommen, es geht :) DANKE an alle, die mir geholfen haben :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 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