ich benutze Lazarus 3.8 mit FPC 3.2.2 unter Windows 11
mein Programm macht komische Dinge und ich kann mir das nicht erklären.
Es geht um die Variablen indarb, indsa und indso.
Die Werte stimmen nicht!!!!
Hier der Code:
Code: Alles auswählen
type TUhrzeit = record // Record für Einträge im Fahrplan (Uhrzeit und Verkehrsmittel)
stunde: integer;
minute: integer;
verkehrsmittel: string;
end;
procedure TForm1.Druckanzeige;
var
z12: integer;
tt: string;
f1: string;
f2: string;
f3: string;
f4: string;
f5: string;
f6: string;
f7: string;
f8: TDateTime;
f9: TDateTime;
f10: string;
f11: integer;
f12: string;
f13: string;
f14: string;
f15: string;
f16: string;
f17: string;
indarb: integer;
indsa: integer;
indso: integer;
induhr: integer;
ind1: integer;
ind2: integer;
ind3: integer;
vdatum: TDateTime;
indverkehr: integer;
verkehr: string;
tabarbeitstag: array [1..1000] of TUhrzeit;
tabsamstag: array [1..1000] of TUhrzeit;
tabsonntag: array [1..1000] of TUhrzeit;
tabverkehr: array [1..10] of TUhrzeit;
// iart, ifunc und izeich sind vom Typ integer;
begin
.......................................
indarb:=0;
indsa:=0;
indso:=0;
indverkehr:=0;
vdatum:=0;
ikomma:=0; // Summe iart+ifunc+izeich
iart:=0; // entspricht wie indarb sein soll
ifunc:=0; // entspricht wie indsa sein soll
izeich:=0; // entspricht wie indso sein soll
Form1.ZQuery1.SQL.Text:='SELECT * FROM fahrplan WHERE Tour=:tour AND Linie=:linie AND solldatum=:solldatum ORDER BY sollzeit, solldatum, Tour, Linie, nach, Wochentag, von';
Form1.ZQuery1.ParamByName('tour').asString:=atour1;
Form1.ZQuery1.ParamByName('linie').asString:=atour3;
Form1.ZQuery1.ParamByName('solldatum').asDateTime:=vdatum;
Form1.ZQuery1.Open;
while not Form1.ZQuery1.EOF do
begin
f1:=Form1.ZQuery1.Fields[0].AsString;
f2:=Form1.ZQuery1.Fields[1].AsString;
f3:=Form1.ZQuery1.Fields[2].AsString;
f4:=Form1.ZQuery1.Fields[3].AsString;
f5:=Form1.ZQuery1.Fields[4].AsString;
f6:=Form1.ZQuery1.Fields[5].AsString;
f7:=Form1.ZQuery1.Fields[6].AsString;
f8:=Form1.ZQuery1.Fields[7].AsDateTime;
f9:=Form1.ZQuery1.Fields[8].AsDateTime;
f13:=Form1.ZQuery1.Fields[9].AsString;
f10:=Form1.ZQuery1.Fields[10].AsString;
f11:=Form1.ZQuery1.Fields[11].AsInteger;
f12:=Form1.ZQuery1.Fields[12].AsString;
f14:=Form1.ZQuery1.Fields[13].AsString;
f2:=Form1.Blankweg(3, f2);
f4:=Form1.Blankweg(3, f4);
f5:=Form1.Blankweg(3, f5);
f7:=Form1.Blankweg(3, f7);
f14:=Form1.Blankweg(3, f14);
if f4 = '' then
begin
if f5 <> '' then
begin
if f2 <> '' then
begin
if f14 <> '' then
begin
ikomma:=ikomma+1;
f12:=Copy(f7,1,2);
f13:=Copy(f7,4,2);
if ((f14 = 'Montag') or (f14 = 'Dienstag') or (f14 = 'Mittwoch') or (f14 = 'Donnerstag') or (f14 = 'Freitag') or (f14 = 'Arbeitstag')) then
begin
iart:=iart+1;
if indarb < 1000 then
begin
// hier wird indarb geladen
indarb:=indarb+1;
tabarbeitstag[indarb].stunde:=StrToInt(f12);
tabarbeitstag[indarb].minute:=StrToInt(f13);
tabarbeitstag[indarb].verkehrsmittel:=f2;
istell:=0;
if indverkehr > 0 then
begin
for inummer:=1 to indverkehr do
begin
if tabverkehr[inummer].verkehrsmittel = f2 then istell:=inummer;
end;
end;
if istell > 0 then
begin
inummer:=tabverkehr[istell].stunde;
inummer:=inummer+1;
tabverkehr[istell].stunde:=inummer;
end else begin
if indverkehr < 10 then
begin
indverkehr:=indverkehr+1;
tabverkehr[indverkehr].stunde:=1;
tabverkehr[indverkehr].verkehrsmittel:=f2;
end;
end;
end;
end;
if f14 = 'Samstag' then
begin
ifunc:=ifunc+1;
if indsa < 1000 then
begin
// hier wird indsa geladen
indsa:=indsa+1;
tabsamstag[indsa].stunde:=StrToInt(f12);
tabsamstag[indsa].minute:=StrToInt(f13);
tabsamstag[indsa].verkehrsmittel:=f2;
istell:=0;
if indverkehr > 0 then
begin
for inummer:=1 to indverkehr do
begin
if tabverkehr[inummer].verkehrsmittel = f2 then istell:=inummer;
end;
end;
if istell > 0 then
begin
inummer:=tabverkehr[istell].stunde;
inummer:=inummer+1;
tabverkehr[istell].stunde:=inummer;
end else begin
if indverkehr < 10 then
begin
indverkehr:=indverkehr+1;
tabverkehr[indverkehr].stunde:=1;
tabverkehr[indverkehr].verkehrsmittel:=f2;
end;
end;
end;
end;
if ((f14 = 'Sonntag') or (f14 = 'Feiertag')) then
begin
izeich:=izeich+1;
if indso < 1000 then
begin
// hier wird indso geladen
indso:=indso+1;
tabsonntag[indso].stunde:=StrToInt(f12);
tabsonntag[indso].minute:=StrToInt(f13);
tabsonntag[indso].verkehrsmittel:=f2;
istell:=0;
if indverkehr > 0 then
begin
for inummer:=1 to indverkehr do
begin
if tabverkehr[inummer].verkehrsmittel = f2 then istell:=inummer;
end;
end;
if istell > 0 then
begin
inummer:=tabverkehr[istell].stunde;
inummer:=inummer+1;
tabverkehr[istell].stunde:=inummer;
end else begin
if indverkehr < 10 then
begin
indverkehr:=indverkehr+1;
tabverkehr[indverkehr].stunde:=1;
tabverkehr[indverkehr].verkehrsmittel:=f2;
end;
end;
end;
end;
end;
end;
end;
end;
Form1.ZQuery1.Next;
end;
Form1.ZQuery1.Close;
// Inhalt der Variablen
ikomma:=ikomma; // = 42
iart:=iart; // = 16
ifunc:=ifunc; // = 14
izeich:=izeich; // = 12
indarb:=indarb; // = 12 sollte = iart sein
indsa:=indsa; // = 12 sollte = ifunc sein
indso:=indso; // = 12 sollte = izeich sein
indverkehr:=indverkehr; // = 2
..................................................
end;
Danke und Gruß
Jürgen