![]() |
grüne Zeile
Liste der Anhänge anzeigen (Anzahl: 1)
hi,
ich habe ein Problem und weiß nicht weiter. Habe Windows 7 und Delphi XE5 Habe eine Code:
Delphi-Quellcode:
Wenn ich Haltepunkte setze und Compeliere ist eine Zeile Grün (siehe Anhang).
Form1.SQLQuery1.SQL.Text:='SELECT * FROM einausmon ORDER BY Jahr, Monat, Ware ';
Form1.SQLQuery1.Open; while not Form1.SQLQuery1.EOF do begin f1:=Form1.SQLQuery1.Fields[0].AsString; f2:=Form1.SQLQuery1.Fields[1].AsString; f3:=Form1.SQLQuery1.Fields[2].AsString; f4:=Form1.SQLQuery1.Fields[3].AsString; f5:=Form1.SQLQuery1.Fields[4].AsString; f6:=Form1.SQLQuery1.Fields[5].AsString; f7:=Form1.SQLQuery1.Fields[6].AsString; f8:=Form1.SQLQuery1.Fields[7].AsString; f9:=Form1.SQLQuery1.Fields[8].AsString; yy:=StrToInt(f2); mm:=StrToInt(f3); dd:=1; dat1:=EncodeDate(yy, mm, dd); yy2:=YearOf(vdat16); mm2:=MonthOf(vdat16); yy3:=YearOf(bdat16); mm3:=MonthOf(bdat16); if ((yy >= yy2) and (yy <= yy3) and (mm >= mm2) and (mm <= mm3)) then begin ........... end; Form1.SQLQuery1.Next; end; Form1.SQLQuery1.Close; Wenn ich nun das Programm im Einzelschritt (F9 bei den Haltepunkten) durcharbeite, so springt das Programm bei der grünen Zeile wieder auf den ersten Haltepunkt usw. So oft bis alle Satze in der Datenbank gelesen sind. Danach geht es mit Form1.SQLQuery1.Close; weiter. Die Codezeilen dazwischen werden nicht berücksichtigt. Hat jemand da eine Idee? Gruß Jürgen |
AW: grüne Zeile
Diese ist eine Zeile, zu der aktuell keine Debuginfos vorliegen.
> neue Zeile oder die Zeile wurde wegoptimiert, wenn z.B. die Variable links nirgendwo verwendet würde und der Compiler sich denkt, dass alles nutzlos ist. Da ich sonst auch nirgendwo Codepunkte links sehe ... einfach mal die Unit / das Projekt neu kompileren erzeugen? Haltepunkte löschen und neu setzen. (manchmal verrutscht einfach was) PS: Ein [DELPHI] dein Delphi-Code [/DELPHI] würde deinen Code bestimmt lesbarer machen. |
AW: grüne Zeile
Grüne Zeile heißt: Der Compiler hat die Zeile entfernt. Entweder ist sie unnötig (ist sie hier offenbar nicht) oder neu.
Daher einmal das ganze Projekt neu kompilieren oder erzeugen und die Compilermeldungen genau lesen. |
AW: grüne Zeile
kann man die Funktion, das der Compiler Zeilen ausschaltet irgendwie deaktivieren?
|
AW: grüne Zeile
Unter Delphi 7 ging das in den Projektoptionen unter Compiler und dort dann unter Optimierung.
Ansonsten mal hier stöbern: ![]() ![]() |
grüne Zeile
Liste der Anhänge anzeigen (Anzahl: 3)
hi,
muss leider nochmal schreieben und das Problem konkretisieren. ich habe ein Problem und weiß nicht mehr weiter. Habe Windows 7 und Delphi XE5 Habe eine Code:
Delphi-Quellcode:
Wenn ich Haltepunkte setze und Compeliere sind einige Zeilen Grün (siehe Anhang).
procedure TForm16.Ladtag;
var z: integer; var m: integer; var dat1: TDate; var dat2: TDate; var dat3: TDate; var wa: string; var sum1: double; var sum2: double; var sum3: double; var sum4: double; var sum5: double; var sum6: double; var mg: double; var dd: Word; var mm: Word; var yy: Word; var dd2: Word; var mm2: Word; var yy2: Word; var mm3: Word; var yy3: Word; var h1: integer; var h2: integer; begin z:=1; StringGrid1.RowCount:=z; Label1.Caption:=Chr(169)+'LINSOFT Das Wohnzimmer Datum: '+FormatDateTime('DD.MM.YYYY',now); sume16:=0; suma16:=0; sum1:=0; sum2:=0; sum3:=0; sum4:=0; sum5:=0; sum6:=0; m:=0; Form1.SQLQuery1.SQL.Text:='SELECT * FROM einaustag ORDER BY Jahr, Monat, Ware '; Form1.SQLQuery1.Open; while not Form1.SQLQuery1.EOF do begin f1:=Form1.SQLQuery1.Fields[0].AsString; f2:=Form1.SQLQuery1.Fields[1].AsString; f3:=Form1.SQLQuery1.Fields[2].AsString; f4:=Form1.SQLQuery1.Fields[3].AsString; f5:=Form1.SQLQuery1.Fields[4].AsString; f6:=Form1.SQLQuery1.Fields[5].AsString; f7:=Form1.SQLQuery1.Fields[6].AsString; f8:=Form1.SQLQuery1.Fields[7].AsString; f9:=Form1.SQLQuery1.Fields[8].AsString; fa:=Form1.SQLQuery1.Fields[9].AsString; yy:=StrToInt(f2); mm:=StrToInt(f3); dd:=StrToInt(f4); dat1:=EncodeDate(yy, mm, dd); if ((dat1 >= vdat16) and (dat1 <= bdat16)) then begin if m = 0 then begin dat2:=dat1; wa:=f1; m:=1; end; mm:=MonthOf(dat2); yy:=YearOf(dat2); mm2:=MonthOf(dat1); yy2:=YearOf(dat1); if ((mm <> mm2) or (yy <> yy2) or (wa <> f1)) then begin dd:=DayOf(dat2); mm:=MonthOf(dat2); yy:=YearOf(dat2); ialpha:=FloatToStr(sum1); Form1.kommapunkt; fb:=ialpha; ialpha:=FloatToStr(sum2); Form1.kommapunkt; fc:=ialpha; ialpha:=FloatToStr(sum3); Form1.kommapunkt; fd:=ialpha; ialpha:=FloatToStr(sum4); Form1.kommapunkt; fe:=ialpha; ialpha:=FloatToStr(sum5); Form1.kommapunkt; ff:=ialpha; ialpha:=FloatToStr(sum6); Form1.kommapunkt; fg:=ialpha; Form1.SQLDataSet1.CommandText:='INSERT INTO einausmon (Ware, Jahr, Monat, einmg, ausmg, einbetrag, ausbetrag, einmwst, ausmwst)'+' values ('''+wa+''', '''+IntToStr(yy)+''', '''+IntToStr(mm)+''', '''+fb+''', '''+fc+''', '''+fd+''', '''+fe+''', '''+ff+''', '''+fg+''')'; h1:=Form1.SQLDataSet1.ExecSQL(False); if h1 <> 1 then begin Label2.Caption:='Fehler beim Einfügen in einausmon, Administrator verständigen'; end; dat2:=dat1; wa:=f1; sum1:=0; sum2:=0; sum3:=0; sum4:=0; sum5:=0; sum6:=0; ialpha:=f5; Form1.punktkomma; mg:=StrToFloat(ialpha); sum1:=sum1+mg; ialpha:=f6; Form1.punktkomma; mg:=StrToFloat(ialpha); sum2:=sum2+mg; ialpha:=f7; Form1.punktkomma; mg:=StrToFloat(ialpha); sum3:=sum3+mg; ialpha:=f8; Form1.punktkomma; mg:=StrToFloat(ialpha); sum4:=sum4+mg; ialpha:=f9; Form1.punktkomma; mg:=StrToFloat(ialpha); sum5:=sum5+mg; ialpha:=fa; Form1.punktkomma; mg:=StrToFloat(ialpha); sum6:=sum6+mg; end else begin ialpha:=f5; Form1.punktkomma; mg:=StrToFloat(ialpha); sum1:=sum1+mg; ialpha:=f6; Form1.punktkomma; mg:=StrToFloat(ialpha); sum2:=sum2+mg; ialpha:=f7; Form1.punktkomma; mg:=StrToFloat(ialpha); sum3:=sum3+mg; ialpha:=f8; Form1.punktkomma; mg:=StrToFloat(ialpha); sum4:=sum4+mg; ialpha:=f9; Form1.punktkomma; mg:=StrToFloat(ialpha); sum5:=sum5+mg; ialpha:=fa; Form1.punktkomma; mg:=StrToFloat(ialpha); sum6:=sum6+mg; end; end; Form1.SQLQuery1.Next; end; Form1.SQLQuery1.Close; if m = 1 then begin dd:=DayOf(dat1); mm:=MonthOf(dat1); yy:=YearOf(dat1); ialpha:=FloatToStr(sum1); Form1.kommapunkt; fb:=ialpha; ialpha:=FloatToStr(sum2); Form1.kommapunkt; fc:=ialpha; ialpha:=FloatToStr(sum3); Form1.kommapunkt; fd:=ialpha; ialpha:=FloatToStr(sum4); Form1.kommapunkt; fe:=ialpha; ialpha:=FloatToStr(sum5); Form1.kommapunkt; ff:=ialpha; ialpha:=FloatToStr(sum6); Form1.kommapunkt; fg:=ialpha; Form1.SQLDataSet1.CommandText:='INSERT INTO einausmon (Ware, Jahr, Monat, einmg, ausmg, einbetrag, ausbetrag, einmwst, ausmwst)'+' values ('''+f1+''', '''+IntToStr(yy)+''', '''+IntToStr(mm)+''', '''+fb+''', '''+fc+''', '''+fd+''', '''+fe+''', '''+ff+''', '''+fg+''')'; h1:=Form1.SQLDataSet1.ExecSQL(False); if h1 <> 1 then begin Label2.Caption:='Fehler beim Einfügen in einausmon, Administrator verständigen'; end; end; m:=0; [Zeile 258] Form1.SQLQuery1.SQL.Text:='SELECT * FROM einausmon ORDER BY Jahr, Monat, Ware '; Form1.SQLQuery1.Open; while not Form1.SQLQuery1.EOF do begin f1:=Form1.SQLQuery1.Fields[0].AsString; f2:=Form1.SQLQuery1.Fields[1].AsString; f3:=Form1.SQLQuery1.Fields[2].AsString; f4:=Form1.SQLQuery1.Fields[3].AsString; f5:=Form1.SQLQuery1.Fields[4].AsString; f6:=Form1.SQLQuery1.Fields[5].AsString; f7:=Form1.SQLQuery1.Fields[6].AsString; f8:=Form1.SQLQuery1.Fields[7].AsString; f9:=Form1.SQLQuery1.Fields[8].AsString; yy:=StrToInt(f2); mm:=StrToInt(f3); dd:=1; dat1:=EncodeDate(yy, mm, dd); yy2:=YearOf(vdat16); mm2:=MonthOf(vdat16); [Zeile277] yy3:=YearOf(bdat16); mm3:=MonthOf(bdat16); if ((yy >= yy2) and (yy <= yy3) and (mm >= mm2) and (mm <= mm3)) then begin if m = 0 then begin dat2:=dat1; m:=1; end; if dat2 <> dat1 then begin dd2:=0; mm2:=MonthOf(dat2); yy2:=YearOf(dat2); Form1.SQLDataSet1.CommandText:='INSERT INTO abschluss (Art, Jahr, Monat, Tag)'+' values ('''+'M'+''', '''+IntToStr(yy2)+''', '''+IntToStr(mm2)+''', '''+IntToStr(dd2)+''')'; h1:=Form1.SQLDataSet1.ExecSQL(False); if h1 <> 1 then begin Label2.Caption:='Fehler beim Einfügen in Abschluss, Administrator verständigen'; end; dat2:=dat1; end; fg:=''; fh:=''; Form1.SQLQuery2.SQL.Text:='SELECT * FROM ware WHERE Ware='''+f1+''' '; Form1.SQLQuery2.Open; while not Form1.SQLQuery2.EOF do begin fg:=Form1.SQLQuery2.Fields[2].AsString; fh:=Form1.SQLQuery2.Fields[13].AsString; Form1.SQLQuery2.Next; end; Form1.SQLQuery2.Close; mm:=StrToInt(f3); yy:=StrToInt(f2); z:=z + 1; StringGrid1.RowCount:=z; z:=z - 1; StringGrid1.Cells[0, z]:=IntToStr(yy); StringGrid1.Cells[1, z]:=IntToStr(mm); StringGrid1.Cells[2, z]:=f1; ialpha:=f4; Form1.punktkomma; mg:=StrToFloat(ialpha); StringGrid1.Cells[3, z]:=FloatToStrF(mg,ffFixed,8,3); StringGrid1.Cells[4, z]:=fg; ialpha:=f5; Form1.punktkomma; mg:=StrToFloat(ialpha); StringGrid1.Cells[5, z]:=FloatToStrF(mg,ffFixed,8,3); StringGrid1.Cells[6, z]:=fh; ialpha:=f6; Form1.punktkomma; mg:=StrToFloat(ialpha); StringGrid1.Cells[7, z]:=FloatToStrF(mg,ffFixed,8,2); sume16:=sume16+mg; ialpha:=f7; Form1.punktkomma; mg:=StrToFloat(ialpha); StringGrid1.Cells[8, z]:=FloatToStrF(mg,ffFixed,8,2); suma16:=suma16+mg; ialpha:=f8; Form1.punktkomma; mg:=StrToFloat(ialpha); StringGrid1.Cells[9, z]:=FloatToStrF(mg,ffFixed,8,2); ialpha:=f9; Form1.punktkomma; mg:=StrToFloat(ialpha); [Zeile 345] StringGrid1.Cells[10, z]:=FloatToStrF(mg,ffFixed,8,2); z:=z + 1; end; Form1.SQLQuery1.Next; end; Form1.SQLQuery1.Close; if m = 1 then begin dd2:=0; mm2:=MonthOf(dat1); yy2:=YearOf(dat1); Form1.SQLDataSet1.CommandText:='INSERT INTO abschluss (Art, Jahr, Monat, Tag)'+' values ('''+'M'+''', '''+IntToStr(yy2)+''', '''+IntToStr(mm2)+''', '''+IntToStr(dd2)+''')'; h1:=Form1.SQLDataSet1.ExecSQL(False); if h1 <> 1 then begin Label2.Caption:='Fehler beim Einfügen in Abschluss, Administrator verständigen'; end; end; Label8.Caption:=FloatToStrF(sume16,ffFixed,9,2); Label10.Caption:=FloatToStrF(suma16,ffFixed,9,2); if z = 1 then begin StringGrid1.RowCount:=2; StringGrid1.Cells[0, 1]:=''; StringGrid1.Cells[1, 1]:=''; StringGrid1.Cells[2, 1]:=''; StringGrid1.Cells[3, 1]:=''; StringGrid1.Cells[4, 1]:=''; StringGrid1.Cells[5, 1]:=''; StringGrid1.Cells[6, 1]:=''; StringGrid1.Cells[7, 1]:=''; StringGrid1.Cells[8, 1]:=''; StringGrid1.Cells[9, 1]:=''; StringGrid1.Cells[10, 1]:=''; end; StringGrid1.FixedRows:=1; StringGrid1.FixedColor:=clLime; end; Wenn ich nun das Programm im Einzelschritt (F9 bei den Haltepunkten) durcharbeite, so springt das Programm bei Zeile 278 als nächstes auf Zeile 345 danach Zeilen 258 bis 277 und wieder Zeile 345 und Zeile 258, und so weiter bis alle Satze in der Datenbank gelesen sind (Zeilennummern im Anhang). Danach geht es mit Form1.SQLQuery1.Close; weiter. Die Codezeilen dazwischen werden nicht berücksichtigt. Projekt neu Compelieren bzw. Projekt neu erzeugen bringt auch nichts. Keine relevanten Fehlermeldungen nach Projekt neu erzeugen vorhanden. Kann man die Funktion Zeilen deaktivieren ausschalten? Hat jemand da eine Idee und kann helfen? Gruß Jürgen |
AW: gruene Codezeilen
Da hab' ich jetzt keine sinnvolle Antwort, weiß aber, dass in eínigen Projekten von mir, die Anzeige der Zeilen im Debugger, nicht mit den tatsächlich ausgeführten Zeilen übereinstimmt. Die Differenz ist zwar innerhalb eines Projektes einheitlich, aber bei unterschiedichen Projekt meist in einer Spanne von ca. 5 bis 9 Zeilen.
Es könnte sein, dass der Debugger die Zeilen nicht mit der realen Welt synchroniert bekommt. Kannst Du Haltepunkte nur auf Zeilen setzen, die auch ausführbaren Code enthalten oder ggfls. auch auf Leerzeilen. In seltenen Fällen hab' ich schonmal diesen Effekt. Compilierst Du mit Debugger-DCUs? Wenn nein, ändere das bitte einmal, eventuell hast Du ja damit Glück. |
AW: gruene Codezeilen
lösche mal die zugehörigen dcus deiner (!) Sourcen und kompilier mal neu. Stimmen die Haltepunkte immer noch nicht, dann schau, ob Du ggf. 2 gleichname Dateien im Suchpfad hast.
Grüße |
AW: gruene Codezeilen
Methode brutal:
Alle Verzeichnisse, die für die Ausgabe dienen, umbenennen und leer neu anlegen. Dann kompilieren, und nur dann, wenn Fehler wegen fehlender DCUs auftreten, zuerst nach den entsprechenden PAS-Dateien suchen und die mit in die entsprechenden Pfade aufnehmen. Nur wenn es keine PAS-Dateien gibt, DCUs in den entsprechenden Verzeichnisse verschieben (also in die neuen Verzeichnis zu den zuvor umbenannten). Und ja: Das ist aufwändig und nervtötend, hilft aber zuweilen, vor allem dann, wenn eine Entwicklungsumgebung schon 'ne Weile in Benutzung ist und sich da so allerlei angesammelt hat (z. B. die von Lemmy angesprochenen gleichnamigen Dateien). Und nein: Eine Erfolgsgarantie gibt's dafür nicht. |
AW: gruene Codezeilen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 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