Results 1 to 5 of 5

Thread: with ... do probleempje

  1. #1
    Member
    Join Date
    Sep 2004
    Location
    Almelo
    Posts
    28

    with ... do probleempje

    Wie kan mij vertellen hoe het volgende kan (Delphi8/WinForms):
    Code:
       AGPen:=Pen.Create(Color.Black,20);
    
      with AGPen do
      begin
        //LineJoin:=LineJoin.Round;  	// werkt niet ; compiler errormelding:
    			//record, object or class type expected
        StartCap:=LineCap.Round;
        EndCap:=LineCap.Round;		
      end;
      AGPen.LineJoin:=LineJoin.Round;  //dit werkt wel (is eigenlijk hetzelfde)
    
    
    Zowel LineCap als LineJoin zijn enumerations.
    StartCap en EndCap werkt wel binnen de with ... do structuur, maar LineJoin niet.
    Voluit geschreven (laatste regel van de code) wekt het wel, terwijl dat toch hetzelfde is als met with ... do.

    vrie
    Last edited by GolezTrol; 15-Sep-04 at 21:46.

  2. #2
    Supports INLDelphiMember Johan Stokking's Avatar
    Join Date
    Sep 2003
    Location
    Assen
    Posts
    649
    Dat is logisch. LineJoin is dus een enumeration en een propertynaam? In de with..do statement heeft de property LineJoin van AGPen een hogere prioriteit dan die enumeration. De compiler zal om die reden een foutmelding geven omdat de property LineJoin geen enumeration heeft die de waarde Round bevat.

    De oplossing is de property of de enumeration en waarde voluit schrijven.

  3. #3

  4. #4
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Originally posted by Johan Stokking
    Dat is logisch....
    Vind ik niet. De Delphi 8 compiler heeft gewoon last met properties die dezelfde naam hebben als een type, nochtans een code guideline van MS. Dit is trouwens niet alleen binnenin with blocks.
    Enums (vooral die met FlagsAttribute) worden hoe dan ook moeizaam herkend (je krijgt soms een vage compiler fout over incompatible types en strings?). En ook met arrays en strings heeft de compiler het lastig.
    De oplossing is veelal de enum (of het type) volledig te kwalificeren:

    Code:
    AGPen := Pen.Create(Color.Black,20);
    with AGPen do
    begin
      LineJoin := System.Drawing.Drawing2D.LineJoin.Round;
      StartCap := LineCap.Round;
      EndCap := LineCap.Round;
    end;
    All methodologies are based on fear. -- Kent Beck.

  5. #5
    Supports INLDelphiMember Johan Stokking's Avatar
    Join Date
    Sep 2003
    Location
    Assen
    Posts
    649
    Dat was wat ik bedoelde met "de enumeration en waarde voluit schrijven".

    Ik vind het logisch dat Delphi 8 hierover klaagt, maar het is onlogisch dat dezelfde namen voor properties en types gebruikt worden. Waar zijn die goede oude tijden waarbij er nog een T voor een type-naam stond?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. SQL en Access Probleempje
    By Peter Wijnhoven in forum Databases
    Replies: 6
    Last Post: 28-Apr-04, 08:37
  2. service application probleempje
    By Argenta in forum Algemeen
    Replies: 3
    Last Post: 06-Feb-04, 12:13
  3. Klein probleempje met If-Then
    By Mr. Delphi in forum Algemeen
    Replies: 3
    Last Post: 06-Jan-04, 21:06
  4. Indy probleempje
    By Daddy M in forum Algemeen
    Replies: 9
    Last Post: 06-Aug-03, 15:41
  5. Checkbox probleempje
    By klonsky in forum Algemeen
    Replies: 1
    Last Post: 24-Jan-02, 13:14

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •