Autor Beitrag
patrick dee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 311

Win 98SE, WinXP
D3,D6
BeitragVerfasst: Fr 25.05.07 09:06 
Morgen Leute,

habe ein Problem bei dem rauskopieren aus meiner Veranstaltungenliste von Einträgen die für die aktuelle Stunde gedacht sind. Es wird in der Liste mittels der Uhr alles herausgenommen und in eine Neue gelegt. Nun habe ich das Problem wenn es kein Einträge für die nächste Stunde gibt, wird einfach der Rest der auch nicht gedacht ist für die aktuelle stund in die Memo1 kopiert. Wie umgehe ich das ? Bisher geht das ganze recht gut. Nur wie gesagt wenn es keine Einträge zb. für 9 Uhr gibt, werden auf einmal alle Einträge ab 10 Uhr genommen. Das Programm soll aber nur die aktl. stunde in die Memo1 kopieren und wenn es keine Einträge gibt eine Meldung ausgeben : Keine Einträge gefunden.
Ich finde kein eLösung oder sehe sie nicht. Kann mir jemand weiterhelfen ????

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
procedure TForm1.TimerAutoVKalenderTimer(Sender: TObject);
const
  //FmtStr ='Durchsage ab%d.00 Uhr';

  FmtStr ='Durchsage ab %d.00 Uhr  Block 1';

  var
 i,j,p,h : integer;
     s    : string;
Stunde    : string;
datum     : string;
EndStunde : string;
Pfad      : string;
begin
datum:= FormatDateTime('dd-mm-yy',NOW);
Veranstaltungen.Memo1.Clear;
Form1.Label1.Caption := Stunde;
Pfad := Parameter.Edit1.Text + Datum + '.vak';
iF nOT(fileexists(Pfad)) then
  begin
  showmessage(Pfad+' nicht gefunden');
  EXIT;
  end;
Parameter.ListBoxVKHeute.items.LoadFromFile(Pfad);
Parameter.ListBoxVKHeute.Update;
Stunde:= (Copy(Parameter.Edit7.Text,0,2));
h := StrToInt(Stunde);
Stunde := Format(FmtStr,[h]);
If h=23 then
  h := -1;
  h := h+1;
EndStunde := Format(FmtStr,[h]);
Veranstaltungen.Label1.Caption := EndStunde;
Veranstaltungen.Label2.Caption := Stunde;
i := 0;
while i < Parameter.ListBoxVKHeute.Items.Count do
  begin
  p :=POS(Stunde,Parameter.ListBoxVKHeute.Items[i]);
  if p <> 0 then // kommt "stunde ( -- Uhr ) " vor?
    begin
    //Eintueten der folgenden Zeile(i+1) bis Endstunde auftaucht oder Ende
    With Parameter.ListBoxVKHeute do
      begin
      for j := i+1 to Items.Count - 1 do
        begin
        if (Items[j]=EndSTunde) OR (length(Items[j])< length(FmtStr))
                                    //AND (POS('-----------------------------------------------------------------',Items[j])<>0)
                                    And (Pos('Durchsage ab %d.00 Uhr  Block 1',Items[j])<>0then
          break //For j
        else
          begin
          //Nur nicht leere Zeilen einfuegen
          if Parameter.ListBoxVKHeute.Items[j] <> '' then
          Veranstaltungen.Memo1.Lines.Add(Parameter.ListBoxVKHeute.Items[j]);
         end;
        end;
      end;
    Break;//while i
    end;//for j
  inc(i);
  end;//while
  Veranstaltungen.Show;
  TimerAutoVKalender.Enabled:=False;
 end;



ich glaube es liegt an diesem Code Abschnitt, da ja immer um eine Stunde hoch gezählt wird.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
while i < Parameter.ListBoxVKHeute.Items.Count do
  begin
  p :=POS(Stunde,Parameter.ListBoxVKHeute.Items[i]);
  if p <> 0 then // kommt "stunde ( -- Uhr ) " vor?
    begin
    //Eintueten der folgenden Zeile(i+1) bis Endstunde auftaucht oder Ende
    With Parameter.ListBoxVKHeute do
      begin
      for j := i+1 to Items.Count - 1 do
        begin
        if (Items[j]=EndSTunde) OR (length(Items[j])< length(FmtStr))



Vielen Dank für eure Hilfe und ein schönes Weekend

Lg Patrick

_________________
Glauben heißt nichts wissen ...
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 25.05.07 10:05 
Moin!

Ehrlich gesagt blicke ich deinen Code nicht... :? :?!?:

Deshalb mal eher grundsätzlich: warum verarbeitest du den Veranstaltungszeitpunkt nicht als TDateTime, dann kannst du mit HourOf(Value) = HourOf(Now) auf die Stunde zugreifen. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.