Page 1 of 2 1 2 LastLast
Results 1 to 15 of 22

Thread: ik wil een set, maar de set wil mij niet

  1. #1
    TSusjuh.Love.Count>MaxInt Francois Schumans's Avatar
    Join Date
    Dec 2002
    Location
    Vodafone-NL, Business Critical Connections
    Posts
    997

    Talking ik wil een set, maar de set wil mij niet

    ik heb een vraagje...

    ik wil graag een set samenstellen van gereserveerde woorden in delphi.

    dus zoiets als:

    Code:
    MyPhatWords = ('procedure', 'function', 'begin', 'end', 'if', 'then', 'else', 'unit', 'while', 'for');
    Maar... dat is natuurlijk niet toegestaan, aangezien ik dus een set wil maken met strings. Als ik dat '' gedeuns weghaal, dan zijn t weer gereserveerde woorden...

    zou ik dan mischien beter afzijn met een array of string, en is die dan ook zo snel in het benaderen (lus enzo om erdoorheen te lopen en te zoeken naar t woord)

    iemand een andere suggestie?

    ben ff beetje aant bekijken wat de makkelijkste/snelste oplossing zou zijn
    If IDE = Delphi Then Raise Greets.Create('Frenske');
    Else Throw New Greets('Frenske')

  2. #2
    Snelste oplossing zal wel een hash-table zijn, maar misschien heb je in jou geval genoeg aan een TStringList.
    Nederlandse Firebird Nieuwsgroep
    Hoe meer je weet, hoe meer je beseft hoe weinig je weet.

  3. #3
    TSusjuh.Love.Count>MaxInt Francois Schumans's Avatar
    Join Date
    Dec 2002
    Location
    Vodafone-NL, Business Critical Connections
    Posts
    997
    ik had nu zoiets geprobed:

    Code:
    CONST
      MyPhatWords : ARRAY[1..10] of String = ['procedure', 'function', 'begin', 'end',
                                              'if', 'then', 'else', 'unit', 'while', 'for']
    Maar dat kon niet. Mag je dan geen Array of Strings declare?

    Ik zal eens ff gaan kijken naar die stringlist... is mischien wel de makkelijkste/snelste oplossing.

    thanx in advance!
    If IDE = Delphi Then Raise Greets.Create('Frenske');
    Else Throw New Greets('Frenske')

  4. #4
    TCustomBuild Rob Bos's Avatar
    Join Date
    Jan 2003
    Location
    Eindhoven
    Posts
    4,213
    ID ?

    Code:
    procedure VulWoordenLijst(var aList : tStrings);
    // voorbeeld van initialisatie 
    begin
    
     With aList Do
      Begin
       Clear;
       Add('unit');
       Add('if');
       Add('then');
       Add('else');
       Add('function');
       Add('procedure')
      End
    
    end;
    
    // en dan als aanroep 
    
    procedure form1.OnCreate();
    var MyFatWords : tStrings;  // of nog beter ; GLOBAAL
    begin
      VulWoordenLijst(MyFatWords) 
    end;
    
    
     // en dan waar nodig een procedure aan roepen
     If WoordInLijst(aWoord , MyFatWords) Then    // moet je er wel aankunnen ! 
      // do your thing
    
    GreetZ Rob

  5. #5
    Een array zou eigenlijk geen probleem mogen zijn, maar persoonlijk geef ik niet de voorkeur aan array's. Laat maar horen of de StringList je bevalt :-)
    Nederlandse Firebird Nieuwsgroep
    Hoe meer je weet, hoe meer je beseft hoe weinig je weet.

  6. #6
    TCustomBuild Rob Bos's Avatar
    Join Date
    Jan 2003
    Location
    Eindhoven
    Posts
    4,213
    Ennuh :

    Code:
    tStringArray : Array [1..6] Of String;
    [edit]
    euhm zie nu dat je dat al had geprobeerd
    [/edit]

  7. #7
    TSusjuh.Love.Count>MaxInt Francois Schumans's Avatar
    Join Date
    Dec 2002
    Location
    Vodafone-NL, Business Critical Connections
    Posts
    997
    Code:
    procedure TFHoofdscherm.MaakEnVulDeList;
    begin
         // create:
         MyPhatWords := TStringList.Create;
    
         // vullen:
         with MyPhatWords do
         begin
             Clear;
             Add('unit');
             Add('if');
             Add('then');
             Add('else');
             Add('function');
             Add('procedure')
         end;
    end;
    
    // globaal:
    var
      MyPhatWords : TStrings
    Owk dan!! dat is dan ongeveer t zelfde :P
    alleen wou ik ff zelf probbe, is altijd fijner om te leren!
    If IDE = Delphi Then Raise Greets.Create('Frenske');
    Else Throw New Greets('Frenske')

  8. #8
    TSusjuh.Love.Count>MaxInt Francois Schumans's Avatar
    Join Date
    Dec 2002
    Location
    Vodafone-NL, Business Critical Connections
    Posts
    997

    Talking

    @ rajar => die array of string had die ik had zou toch moeten kunne?

    in c kan ik ook meteen een array die ik heb gedeclared vullen/initialiseren met iets.
    dit gaat in delphi toch ook? Ik weet dat t gaat met integers, waarom dan niet met strings? Ik kreeg de fout ordinal type required, terwijl ik string had staan...

    [edit]

    was ff te snel met posten, zag nu pas je edit

    [/edit]

    [edit 2 ]

    idd arno, is een goeie! bevalt zeer goed... is makkelijker mee te werken als ik d8 :>

    [/edit 2 ]
    If IDE = Delphi Then Raise Greets.Create('Frenske');
    Else Throw New Greets('Frenske')

  9. #9
    TCustomBuild Rob Bos's Avatar
    Join Date
    Jan 2003
    Location
    Eindhoven
    Posts
    4,213
    Als je MyFatWords declareerd als tStrings hoef je hem niet te createn (dacht ik)


    en ook :

    het is mooier om de variabele te createn ergens in een initialisatie, en dan mee te geven in een procedure die hem vult...

    Dan kun je hem ook nl freeën op de juiste plek ...

  10. #10
    TSusjuh.Love.Count>MaxInt Francois Schumans's Avatar
    Join Date
    Dec 2002
    Location
    Vodafone-NL, Business Critical Connections
    Posts
    997
    ja owk, dat is waar, maar t ging zich om t algehele aspect van de zojuist behandelde functie van delphi :P
    If IDE = Delphi Then Raise Greets.Create('Frenske');
    Else Throw New Greets('Frenske')

  11. #11
    TSusjuh.Love.Count>MaxInt Francois Schumans's Avatar
    Join Date
    Dec 2002
    Location
    Vodafone-NL, Business Critical Connections
    Posts
    997
    @ Rob:

    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var  TempList: TStrings;	{ declare the list }
    begin
      TempList := TStringList.Create;	{ construct the list object }
      try    { use the string list }
      finally    TempList.Free;	{ destroy the list object }
      end;
    end;
    uit de delphi 7 officele helb
    If IDE = Delphi Then Raise Greets.Create('Frenske');
    Else Throw New Greets('Frenske')

  12. #12
    TCustomBuild Rob Bos's Avatar
    Join Date
    Jan 2003
    Location
    Eindhoven
    Posts
    4,213
    Was maar een tip

  13. #13
    TSusjuh.Love.Count>MaxInt Francois Schumans's Avatar
    Join Date
    Dec 2002
    Location
    Vodafone-NL, Business Critical Connections
    Posts
    997
    idd weet ik, ik wou alleen ff laten merken dat ik ernaar gezocht had, voor dat ik op t forum zou gaan vragen hoe het zat

    thnx zoiezo
    If IDE = Delphi Then Raise Greets.Create('Frenske');
    Else Throw New Greets('Frenske')

  14. #14
    TSusjuh.Love.Count>MaxInt Francois Schumans's Avatar
    Join Date
    Dec 2002
    Location
    Vodafone-NL, Business Critical Connections
    Posts
    997
    en idd rob, je hoeft m niet te createn:

    ^post

    volgens deze post, word dat idd gedaan door delphi zelf, indien de variabele bij de globals zit...

    weer wat geleerd!
    If IDE = Delphi Then Raise Greets.Create('Frenske');
    Else Throw New Greets('Frenske')

  15. #15
    Originally posted by SpeedFreak
    ik had nu zoiets geprobed:

    Code:
    CONST
      MyPhatWords : ARRAY[1..10] of String = ['procedure', 'function', 'begin', 'end',
                                              'if', 'then', 'else', 'unit', 'while', 'for']
    Maar dat kon niet. Mag je dan geen Array of Strings declare?
    Je zat er maar zo'n klein stukje naast:

    Code:
    CONST
      MyPhatWords : ARRAY[1..10] of String = ('procedure', 'function', 'begin', 'end',
                                              'if', 'then', 'else', 'unit', 'while', 'for');
    Gewone haakjes in plaats van blokhaken :P
    Als je je code dan toch duidelijk wilt hebben met een const (wat dus ook weer inhoudt dat het niet erg uitbreidbaar is, zou je de 'vocabulaire' willen uitbreiden), kun je ook nog een gewone set aanmaken, en dan in plaats van [1..10] iets anders als identifiers te nemen, zoals [kwProcedure..kwFor] (TKeyWord?). Op die manier zal je code een stuk duidelijker worden, en delphi doet ook nog eens de range checking voor je :P

    [Edit][1..6]? Ik moet de volgende keer even iets beter lezen Veranderd naar [1..10].[/Edit]
    Nieuw, speciaal voor Borland, de perfecte programmeur.

    Alleen dat ben ik niet

Page 1 of 2 1 2 LastLast

Thread Information

Users Browsing this Thread

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

Similar Threads

  1. Replies: 67
    Last Post: 15-Jun-04, 12:32
  2. CTTM 2003
    By Marcel in forum Koffiehoek
    Replies: 26
    Last Post: 02-Jun-03, 13:02

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
  •