nachdem ich jahrelang nur lesend dabei war, muss ich jetzt auch mal eine Frage stellen, bei der ich selber nicht weiterkomme.
Bei der Konvertierung eines alten Delphi-Programms nach Lazarus bin ich bei der folgenden Delphi-Anweisung ins Stolpern gekommen:
Code: Alles auswählen
if false then Excel.Selection.Begin;
Excel.Selection.End[xlUp].Select;
Zu den Zeilen muss ich ein paar Details erklären. In der zweiten Zeile wird ab der selektierten leeren Excel-Zelle nach oben hin (xlUp) die erste gefüllte Zelle gesucht; das ist ganz normaler VBA- bzw. OLE-Code. Delphi meckerte jedoch darin das "End" an. Um den Compiler (oder eher den Parser) zu überlisten, dient die erste Zeile mit dem "Begin". Damit stimmt die Paarung der "Begin"s und "End"s wieder. Eine programmtechnische Wirkung hat die erste Zeile wegen dem "if false..." sowieso nicht und wird vermutlich gleich wegoptimiert.
Delphi (zumindest Delphi 7) hat sich damit tatsächlich überlisten lassen. Lazarus macht da aber nicht mit. Kennt jemand eine Möglichkeit, so eine Anweisung trotzdem durchzuführen? Oder kennt jemand eine andere Möglichkeit, um die erste belegte Zelle zu finden? Die Zellen der Reihe nach zu überprüfen wäre natürlich ein Weg, aber der umständlichste und vor allem der langsamste Weg. Excel ist da nicht gerade schnell.