Einzelnen Beitrag anzeigen

robvs

Registriert seit: 3. Jul 2006
30 Beiträge
 
#1

Compilerfehler bei with do Anweisung?

  Alt 26. Mär 2007, 10:46
Hallo zusammen,

ich habe bei mir ein Phänomen festgestellt, welches meiner Meinung nach ein Bug unter Delphi 2006 Win 32 ist. Zur Erkläung der folgende Quelltext:

Delphi-Quellcode:
function TfrmLieferscheinVerarbeite.setAuData(var canEdit : boolean; aiAuftraege: TAryInt): boolean;
var
begin
     Result := FALSE;
     (...)
            with FDM.IBQ_Main do //relevante Auftragsdaten einlesen
            begin
                 canEdit := ((canEdit) or ((FieldByName('VERSANDKOSTEN_J_N').AsString = 'J') and
                                           (TfrmWSLieferscheinDruck(Owner).LSMode in [lsmAuftrag, lsmKundeAu])));

                 if (canEdit) then
                    FAuPosi.Versandkosten := FieldByName('VERSANDKOSTEN').AsCurrency
                 else
                     FAuPosi.Versandkosten := 0;
      (...)

            end;//with FDM.IBQ_Main do
     finally
            FDM.IBQ_Main.Close;
     end;
end;
Hierbei geht es um den variablen Parameter "canEdit", welcher immer FALSE bleibt, OBWOHL er TRUE werden müsste, da die Bedingungen nach dem "or" in jedem Fall TRUE ergeben.
Nachdem ich fast vom guten Glauben abgefallen bin, hab ich den Ausdruck mal vor den With-do-Block gesetzt und ES FUNKTIONIERTE!
Um sicher zu stellen, dass es wirklich an dem With-do-Block liegt, habe ich diesen entfernt und überall wo es hingehört, das FDM.IBQ_Main ergänzt und das canEdit wieder zurück an seinen alten Platz gesetzt, ebenfalls mit positivem Resultat.

Eine schnelle Antwort wäre sehr hilfreich, da ich eventuell andere Projekte diesbezüglich umstellen muss.

Viele Grüße
Rob
  Mit Zitat antworten Zitat