AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Compilerfehler bei with do Anweisung?
Thema durchsuchen
Ansicht
Themen-Optionen

Compilerfehler bei with do Anweisung?

Ein Thema von robvs · begonnen am 26. Mär 2007 · letzter Beitrag vom 26. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
robvs

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

Compilerfehler bei with do Anweisung?

  Alt 26. Mär 2007, 11: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
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Compilerfehler bei with do Anweisung?

  Alt 26. Mär 2007, 11:56
Hi,

ich geh mal davon aus, dass IBQ_Main irgendeine Query - Compo ist.
Wenn diese (sollte IMHO so sein) auch die Eigenschaft oder Methode CanEdit hat, so hat dies in einem With den Vorrang.
Das merkt man auch, wenn man mit der Quelltextvervollständigung arbeitet und in der List CanEdit 2 mal hat.
Man sollte ein with in solchen Fällen lieber vermeiden.

Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
robvs

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

Re: Compilerfehler bei with do Anweisung?

  Alt 26. Mär 2007, 12:08
Hey,

das wäre zu blöd von mir und zu schön im allgemeinen gewesen, aber die Query hat leider nicht die Eigenschaft CanEdit sondern CanModify.

Also bleibt die Frage weiter offen. Irgendwelche Ideen??
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Compilerfehler bei with do Anweisung?

  Alt 26. Mär 2007, 12:11
meine Idee wäre einen Haltepunkt zu setzen und zu prüfen ob hinter dem "or" die Bedinung wirklich true ergibt. Als nächstes dann überprüfen ob nach ausführen der Anweisung (also im nächsten Step) wirklich nix zugewiesen wurde. Notfalls auch rein steppen versuchen um zu sehen ob es ein Property ist etc.
Auf jeden Fall ist "with-do" nicht fehlerhaft.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
robvs

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

Re: Compilerfehler bei with do Anweisung?

  Alt 26. Mär 2007, 12:25
Diese Überprüfungen habe ich auch gemacht, sehr ausgiebig sogar. Deswegen konnte man mich heute Morgen mit einem großen Fragezeichen auf der Stirn duch die Gegend rennen sehen.

Ich hatte bislang auch noch nie Probleme mit with-do Blöcken, allerdings hatten wir bis vor kurzem Delphi 5 als IDE.

Also, hat vielleicht noch jmd eine Idee?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Compilerfehler bei with do Anweisung?

  Alt 26. Mär 2007, 12:31
verwende mal anstelle von CanEdit eine zwischenvariable mit anderem namen
Delphi-Quellcode:
zwischenvariable := canedit;
//das bisherige aber mit "zwischenvariable" anstelle von "canedit"
canedit := zwischenvariable;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
robvs

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

Re: Compilerfehler bei with do Anweisung?

  Alt 26. Mär 2007, 12:35
Auch das habe ich gemacht... wie gesagt, ich habe das schon sehr ausführlich untersucht.

Ach, eine Information, die ich vergessen habe, könnte noch hilfreich sein: Wenn ich der Var direkt TRUE zuweise, dann ist die auch true. Nur eben nicht, nach dem im Beispiel genannten boolschen Ausdruck, welcher übrigens ebenfalls wirklich 1000 %ig TRUE ergibt - da besteht kein Zweifel.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Compilerfehler bei with do Anweisung?

  Alt 26. Mär 2007, 12:38
wenn du direkt zuweist geht es? bist du dir wirklich sicher das es dein Ausdruck True zurück gibt?
Wie war das resultat als du mit zwischenvariable gearbeitet hast? wurde diese dann auf True gesetzt?

Ist sichergestellt das Owner immer vom Typ TfrmWSLieferscheinDruck ist?
und von welcher Klasse ist TfrmWSLieferscheinDruck sowie TfrmLieferscheinVerarbeite abgeleitet?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#9

Re: Compilerfehler bei with do Anweisung?

  Alt 26. Mär 2007, 12:40
Nenn doch mal den Parameter der Methode von canEdit zu ACanEdit um.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Compilerfehler bei with do Anweisung?

  Alt 26. Mär 2007, 13:10
Hallo,

um Jens' Bemerkung noch zu ergänzen: die WITH-Anweisung bezieht sich auch die Eigenschaft Owner. Könnte das der Fehler sein?

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz