Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zeit, Datum überwachen (https://www.delphipraxis.net/97502-zeit-datum-ueberwachen.html)

schrimm 11. Aug 2007 19:47


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:

semo 11. Aug 2007 19:52

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?

schrimm 11. Aug 2007 19:59

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:
var
 Beistpeil: array[1..10,1..2] of string;
und dann wenn es möglich wäre auch noch, wie man dann die länge ändert :sharkylinchen:

mkinzler 11. Aug 2007 20:06

Re: Zeit, Datum überwachen
 
Es würde sich u.U. auch eine Datenbank anbieten.

schrimm 11. Aug 2007 20:07

Re: Zeit, Datum überwachen
 
Zitat:

Zitat von mkinzler
Es würde sich u.U. auch eine Datenbank anbieten.

ich kenn mich ja da ni soo aus, aber glaube, das wird recht aufwendig, dass zu lernen, da ham wir nächstes jahr in der schule 1 Jahr dafür zeit

semo 11. Aug 2007 20:24

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.

SirTwist 12. Aug 2007 13:46

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:
type
  TTermin = class(TObject)
    Datum:   TDate;
    Uhrzeit: TTime;
    Titel:   String;
    Aktiv:   Boolean;
  end;
(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)

Wenn Du so eine Klasse hast, kannst Du Deine Termin in einer TObjectList speichern:
Delphi-Quellcode:
var
  Termine: TObjectList;
und später im Programm musst Du im Programm diese ObjectList erzeugen und beim Programmende wieder löschen:

Beim Programmstart:
Delphi-Quellcode:
  Termine := TObjectList.Create;
Beim Programmende:
Delphi-Quellcode:
  FreeAndNil(Termine); // gibt den genutzten Speicher wieder frei und löscht die Terminliste
Die einzelnen Termine legst Du so an:
Delphi-Quellcode:
var termin: TTermin;
begin
  termin := TTermin.Create;
  termin.Datum := ...
  termin.Uhrzeit := ...
  termin.Titel := ...
  Termine.Add(termin);
und Zugreifen kannst Du auf diese Liste so:
Delphi-Quellcode:
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;
So, zum Thema "Objekte" etc sollte es genügend Tutorials und Hilfen hier geben, schau dich einfach mal um.

schrimm 13. Aug 2007 14:21

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;
    ...

Luckie 13. Aug 2007 14:53

Re: Zeit, Datum überwachen
 
Und hier gibt es ein ganzen kurzes Tutorial dazu von mir:
http://www.michael-puff.de/Developer...er_Klassen.php

Und hier nochmal eine Demo in Form eine Memory-Spieles: http://www.delphipraxis.net/internal...=761178#761178

schrimm 13. Aug 2007 15:44

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.
Seite 1 von 2  1 2      

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