| type
|
| TStapel = ^TStapelZeit;
|
| TStapelZeit = record
|
| naechster : TStapel;
|
| Wert:TTime;
|
| Text:string;
|
| end;
|
|
|
| TForm1 = class(TForm)
|
| Timer1: TTimer;
|
| Edit1: TEdit;
|
| Edit2: TEdit;
|
| Edit3: TEdit;
|
| Edit4: TEdit;
|
| Edit5: TEdit;
|
| Edit6: TEdit;
|
| Edit7: TEdit;
|
| Memo1: TMemo;
|
| Memo2: TMemo;
|
| Button1: TButton;
|
| Button2: TButton;
|
| Button3: TButton;
|
| Button4: TButton;
|
| Label1: TLabel;
|
| Label2: TLabel;
|
| Label3: TLabel;
|
| procedure FormCreate(Sender: TObject);
|
| procedure Timer1Timer(Sender: TObject);
|
| procedure Button1Click(Sender: TObject);
|
| procedure Button2Click(Sender: TObject);
|
| procedure Button3Click(Sender: TObject);
|
| procedure Button4Click(Sender: TObject);
|
|
|
| private
|
|
|
| public
|
|
|
| end;
|
|
| var
|
| Form1: TForm1;
|
| anker: TStapel;
|
| zahlendrin,p:integer;
|
|
| implementation
|
|
| {$R *.dfm}
|
|
|
| procedure Wieviel;
|
| var hilfe:TStapel;
|
| begin
|
| zahlendrin:=0;
|
| hilfe:=anker;
|
| while not (hilfe=Nil) do begin
|
| hilfe:=hilfe^.naechster;
|
| zahlendrin:=zahlendrin+1;
|
| end;
|
| end;
|
|
| procedure ZeigeDich;
|
| var HilfsElement:TStapel;
|
| begin
|
| Form1.Memo1.Text:='';
|
| Form1.Memo2.Text:='';
|
| HilfsElement:=anker;
|
| while not (HilfsElement=NIL) do
|
| begin
|
| Form1.Memo1.Text:= Form1.Memo1.Text + HilfsElement^.Text +chr(13)+chr(10);
|
| Form1.Memo2.Text:= Form1.Memo2.Text + timetostr(HilfsElement^.Wert) +chr(13)+chr(10);
|
| HilfsElement:=HilfsElement^.naechster;
|
| end;
|
| end;
|
|
| procedure TryNext(a:TTime;e:integer);
|
| var zaehler:integer;
|
| voriger,hilfe:TStapel;
|
| c:string;
|
| begin
|
| hilfe:=anker;
|
| if (e=0) and (hilfe^.Wert=a) then begin
|
| c:=hilfe^.Text;
|
| MessageDlg(c,mtWarning,[mbok],0);
|
| anker:=anker^.naechster;
|
| dispose(hilfe);
|
| ZeigeDich;
|
| Wieviel;
|
| end;
|
| if (e>0) then begin
|
| zaehler:=0;
|
| hilfe:=anker;
|
| repeat
|
| voriger:=hilfe;
|
| hilfe:=hilfe^.naechster;
|
| zaehler:=zaehler+1;
|
| until zaehler=e;
|
| if hilfe^.Wert=a then begin
|
| c:=hilfe^.Text;
|
| MessageDlg(c,mtWarning,[mbok],0);
|
| voriger^.naechster:=hilfe^.naechster;
|
| dispose(hilfe);
|
| end;
|
| end;
|
| ZeigeDich;
|
| Wieviel;
|
| end;
|
|
|
| procedure Rein(z:TTime);
|
| var h,voriger,neu:TStapel;
|
| j:string;
|
| begin
|
| j:=Form1.Edit4.Text;
|
| h:=anker;
|
| while ((h<>Nil) and (h^.Wert<z)) do
|
| begin
|
| voriger:=h;
|
| h:=h^.naechster;
|
| end;
|
| new(neu);
|
| neu^.Wert:=z;
|
| neu^.Text:=j;
|
| neu^.naechster:=h;
|
| voriger^.naechster:=neu;
|
| if anker=Nil then anker:=neu;
|
| if h=anker then begin
|
| neu^.naechster:=anker;
|
| anker:=neu;
|
| end;
|
| ZeigeDich;
|
| Wieviel;
|
| Form1.Edit1.Text:='';
|
| Form1.Edit2.Text:='';
|
| Form1.Edit3.Text:='';
|
| Form1.Edit4.Text:='';
|
| end;
|
|
|
|
| procedure TForm1.Button1Click(Sender: TObject);
|
| var f,g,h:string;
|
| i:TTime;
|
| begin
|
| f:=Edit1.Text;
|
| g:=Edit2.Text;
|
| h:=Edit3.Text;
|
| if ((-1<strtoint(f)) and (strtoint(f)<24) and (strtoint(g)<60) and (-1<strtoint(g)) and (-1<strtoint(h)) and (strtoint(h)<60)) then begin
|
| i:=strtotime(f+':'+g+':'+h);
|
| Rein(i);
|
| Memo1.Enabled:=True;
|
| Memo2.Enabled:=True;
|
| end else MessageDlg('falscher Zahlenwert',mtWarning,[mbok],0);
|
| end;
|
|
| procedure TForm1.FormCreate(Sender: TObject);
|
| begin
|
| Memo1.Text:='';
|
| Memo2.Text:='';
|
| p:=0;
|
| end;
|
|
| procedure TForm1.Timer1Timer(Sender: TObject);
|
| var a,b:TTime;
|
| hilfe:TStapel;
|
| e,f:integer;
|
| begin
|
| a:=time;
|
| e:=0;
|
| f:=zahlendrin;
|
| Label1.caption:=TimetoStr(a);
|
| hilfe:=anker;
|
| if hilfe<>Nil then begin
|
| repeat
|
| TryNext(a,e);
|
| e:=e+1;
|
| hilfe:=hilfe^.naechster;
|
| until (hilfe=Nil) or (zahlendrin<>f)
|
| end;
|
| end;
|
|
| procedure TForm1.Button2Click(Sender: TObject);
|
| var zahl,zaehler:integer;
|
| hilfe:TStapel;
|
| begin
|
| zaehler:=0;
|
| hilfe:=anker;
|
| zahl:=StrtoInt(Edit5.Text)-1;
|
| if (zahl>-1) then begin
|
| if (zahlendrin>zahl)then begin
|
| if (zahl<>0) then begin
|
| repeat
|
| hilfe:=hilfe^.naechster;
|
| zaehler:=zaehler+1;
|
| until zaehler=zahl;
|
| end;
|
| Edit6.Text:=TimetoStr(hilfe^.Wert);
|
| Edit7.Text:=hilfe^.Text;
|
| p:=zahl;
|
| end else
|
| MessageDlg('falscher Zahlenwert',mtWarning,[mbok],0);
|
| end else begin
|
| Edit6.Text:='';
|
| Edit7.Text:='';
|
| end;
|
| end;
|
|
| procedure TForm1.Button3Click(Sender: TObject);
|
| var zahl,zaehler:integer;
|
| hilfe,h,voriger,voriger2:TStapel;
|
| begin
|
| hilfe:=anker;
|
| zaehler:=0;
|
| zahl:=p;
|
| if (zahl>0) then begin
|
| repeat
|
| voriger2:=hilfe;
|
| hilfe:=hilfe^.naechster;
|
| zaehler:=zaehler+1;
|
| until zaehler=zahl;
|
| voriger2^.naechster:=hilfe^.naechster;
|
| end;
|
| if (zahl>-1) then begin
|
| hilfe^.Wert:=StrtoTime(Edit6.Text);
|
| hilfe^.Text:=Edit7.Text;
|
| h:=anker;
|
| if ((h<>Nil) and (h^.Wert>hilfe^.Wert)) then begin
|
| hilfe^.naechster:=anker;
|
| anker:=hilfe;
|
| end else begin
|
| while ((h<>Nil) and (h^.Wert<hilfe^.Wert)) do
|
| begin
|
| voriger:=h;
|
| h:=h^.naechster;
|
| end;
|
| voriger^.naechster:=hilfe;
|
| hilfe^.naechster:=h;
|
| end;
|
| ZeigeDich;
|
| end;
|
| p:=-1;
|
| end;
|
|
| procedure TForm1.Button4Click(Sender: TObject);
|
| var zahl,zaehler:integer;
|
| hilfe,voriger:TStapel;
|
| begin
|
| hilfe:=anker;
|
| if anker<>Nil then begin
|
| zaehler:=0;
|
| zahl:=p;
|
| if (zahl>0) then begin
|
| repeat
|
| voriger:=hilfe;
|
| hilfe:=hilfe^.naechster;
|
| zaehler:=zaehler+1;
|
| until zaehler=zahl;
|
| voriger^.naechster:=hilfe^.naechster;
|
| dispose(hilfe);
|
| end;
|
| if (zahl=0) then begin
|
| hilfe:=anker;
|
| anker:=hilfe^.naechster;
|
| dispose(hilfe);
|
| end;
|
| end;
|
| p:=-1;
|
| ZeigeDich;
|
| Wieviel;
|
| Edit6.Text:='';
|
| Edit7.Text:='';
|
| end;
|
|
| end. |