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

Thread: NLDDanyUtils

  1. #1

    Thumbs up NLDDanyUtils

    De sources van NLDDanyUtils zijn te vinden in:
    ftp://ftp.nldelphi.com/public/OpenSo.../NLDDanyUtils/

    Deze thread is nu vervangen door aparte threads voor iedere utility.
    Dat is beter te overzien dan 1 thread voor alle verschillende utilities: alle opmerkingen en vragen kwamen door elkaar.

    Graag de specifieke threads raadplegen voor informatie, zie
    http://www.nldelphi.com/forum/forumd...s=&forumid=103
    Last edited by Dany; 09-Apr-05 at 13:34.

  2. #2
    Hoi,

    Er is een nieuwe versie (0.2 van 11-01-2004) van NLDRcsFileUtils.

    De wijzigingen zijn:

    * De procedures/functies 'TFileList.MakeFileList', 'FileNameExists'
    en 'GetFileNames 'zijn aangepast zodat:
    - Ze recursief kunnen werken (dus ook in subdirectories duiken)
    - Ze, in de gevonden filenamen, ook het filepath kunnen meegeven. Hier zijn 3
    keuzes: geen path, een relatief path (relatief tegenover de start directory) en
    het full (absoluut) path ('C:\aaa\bbb\...')

    * De functie 'ExtendedFileAttribute' is verwijderd uit de interface sectie.

    Veel plezier...
    Last edited by Dany; 12-Jan-04 at 09:36.
    Vriendelijke groeten,
    Dany

  3. #3
    Hoi,

    Er zijn 2 nieuwe utilities toegevoegd:

    - NLDMailOut - en
    - NLDSmtpSetup -.

    De uitleg over beide utilities kun je vinden in de eerste post in deze thread.

    Veel plezier.
    Last edited by Dany; 05-Feb-04 at 12:55.
    Vriendelijke groeten,
    Dany

  4. #4
    Hoi,

    Er is een nieuwe utility toegevoegd:

    - NLDSimpleIniFile -

    De uitleg daarover kun je vinden in de eerste post in deze thread.

    Veel plezier.
    Vriendelijke groeten,
    Dany

  5. #5
    Hoi Delphi fanaten,

    Er zijn wijzigingen aangebracht in de volgende utilities:

    - NLDSimpleIniFile -
    Er zijn nu 2 verschillende methoden om een StringList naar de inifile te schrijven en eruit te lezen.
    Ook toegevoegd: de "TSimpleIniFile" class.

    - NLDRcsStrings -
    Verouderde procedures zijn verwijderd.
    Procedures om een StringList om te zetten naar een string en omgekeerd toegevoegd.

    - NLDFileUtils -
    "GetFileNames" accepteert nu ook een StringList met de te zoeken paths in plaats van een enkel path. Ook wordt nu regelmatig "ProcessMessages" aangeroepen. Dit verhindert het bevriezen van de applicatie tijdens het zoeken.

    Veel plezier.
    Vriendelijke groeten,
    Dany

  6. #6
    Ik vroeg me af hoe je een stringlist naar een string converteert en andersom, anders dan via de Text-property van de stringlist, maar helaas schijnen deze functies nog niet in de 040504 (4 mei) versie te staan. Waar is de versie van vandaag?
    1+1=b

  7. #7
    Hoi GolezTrol,

    Ik heb ge-experimenteerd met de TStringList.CommaText property en die deed niet helemaal wat ik wou. Er waren problemen als ik strings in de list had met spaties erin.

    Blijkbaar beschouwt "CommaText" die ook als delimiters. Oplossing is er dubbele quotes rondzetten, maar dat gaf problemen met strings zoals "*.c" (daarvan bleef alleen de ".c" over om een of andere reden. Ik had de indruk dat je alleen dubbele quotes mocht gebruiken als de string inderdaad een spatie bevatte, en anders niet...

    Dan maar zelf wat eenvoudige functies geschreven voor conversie van een stringlist naar een komma delimited string en omgekeerd. Er mogen geen quotes in gebruikt worden, de strings (die dus ook spaties kunnen bevatten) staan gewoon tussen de komma's. Bij het converteren worden de strings in de StringList eerst "getrimd".

    Dit is de kode:
    Code:
    procedure StringToTStrings(S: string; T: TStrings);
    var P: Integer;
    begin
      T.Clear;
      P := pos(',', S);
      while P > 0 do
      begin
        T.Add(trim(copy(S, 1, P - 1)));
        delete(S, 1, P);
        P := pos(',', S);
      end;
      if S > '' then T.Add(trim(S));
    end;
    
    function TStringsToString(T: TStrings): string;
    var I: Integer;
    begin
      Result := '';
      for I := 0 to T.Count - 1 do
        Result := Result + ',' + trim(T[I]);
      if length(Result) > 0 then delete(Result, 1, 1);
    end;
    Ik heb deze namiddag de nieuwe versie (via FreeVCS) ingecheckt, ik denk dat die gauw beschikbaar komt.

    p.s.: de *.zip file van vandaag staat er nu, ik heb hem er zelf neergezet. De officiële komt wel.
    Last edited by Dany; 29-May-04 at 20:00.
    Vriendelijke groeten,
    Dany

  8. #8
    Volgens mij gaat StringList.Text alle items gescheiden met een enter teruggeven. Bij het teruglezen worden enters gezien als scheidingsteken voor de verschillende items.

    Met CommaText krijg je inderdaad wel alle items als één lange string terug, maar hierin worden komma's en aanhalingstekens etc. netjes geëscaped.

    Ik zie dat jouw functie ook gaat 'trimmen'. De werking is dus inderdaad wel anders, maar ik wou je er toch even op wijzen. Misschien dat je de achterliggende code van de Text en/of de CommaText properties ook kunt gebruiken voor als je ooit deze functies wilt optimaliseren. Met grotere strings is het knip- en plakwerk dat je nu uitvoert in StringToTStrings misschien een vertragende factor.
    1+1=b

  9. #9
    Yay: Student(je) af
    Join Date
    Jun 2003
    Location
    Harderwijk
    Posts
    2,621
    En nog een kleine opmerking
    Misschien kan je beter een lokale kopie van de String maken, en dan
    Code:
     // procedure StringToTStrings(S: string; T: TStrings);
     procedure StringToTStrings(const S: string; var T: TStrings);
    Overigens is het niet zo consequent dat je bij de ene conversie de output als (var-)parameter meegeeft en bij de andere alleen de source als parameter en de output als result.
    Is er een reden dat je niet gewoon van allebei een function of een procedure hebt gemaakt?
    My software never contains bugs. Perhaps just undocumented features.

  10. #10
    notice-itter SvG's Avatar
    Join Date
    Apr 2002
    Location
    's-Hertogenbosch
    Posts
    4,865
    Code:
    procedure StringToTStrings(const S: string; Const T: TStrings);
    zo zie ik het het liefst.. Het is nu duidelijk dat je zelf voor de instantie moet zorgen
    !

  11. #11
    Yay: Student(je) af
    Join Date
    Jun 2003
    Location
    Harderwijk
    Posts
    2,621
    Misschien dat ik iets over het hoofd zie, maar als je die TStrings constant maakt kan je die toch niet veranderen in de procedure?
    Dan zou je het een const var moeten maken maar ik weet niet of dat kan in Delphi (in C++ wel )
    My software never contains bugs. Perhaps just undocumented features.

  12. #12
    notice-itter SvG's Avatar
    Join Date
    Apr 2002
    Location
    's-Hertogenbosch
    Posts
    4,865
    Nee.. Const betekend dat je de waarde er van niet kunt veranderen.. In het geval van classes betekend het niet dat je de properties/procedures/functions etc ervan niet kunt gebruiken.
    !

  13. #13
    SillyMember Dirk Andries's Avatar
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,721
    Originally posted by CompuChip
    Misschien dat ik iets over het hoofd zie, maar als je die TStrings constant maakt kan je die toch niet veranderen in de procedure?...
    Uh? Dit klopt niet. Je kan dan de pointer niet wijzigen.
    Ik vind dan trouwens het gebruik van const voor de TStrings variabele ook overbodig.
    All methodologies are based on fear. -- Kent Beck.

  14. #14
    Yay: Student(je) af
    Join Date
    Jun 2003
    Location
    Harderwijk
    Posts
    2,621
    Oh, dat heb ik dus nooit geweten
    Ik dacht dat const betekende dat het object niet te wijzigen was, maar dat slaat dus op de pointer... Dus zeg maar wat ik bedoelde met C++'s const var equivalent (is ook al een tijdje geleden hoor) waar je ook constructies hebt als
    const * var
    const var *
    My software never contains bugs. Perhaps just undocumented features.

  15. #15
    @GolezTrol (mooi gevonden naam overigens):
    Ik vroeg me af hoe je een stringlist naar een string converteert en andersom, anders dan via de Text-property van de stringlist,
    Ik heb op jouw vorige opmerking (over de TStringList.Text property) verkeerd ge-antwoord. Ik heb daarmee niet ge-experimenteerd maar wel met TStringList.CommaText. Daarmee waren dus voornoemde problemen bij gebruik van dubbele quotes.

    Voor wat StringList.Text betreft: dat doet de job wel, maar is niet goed voor mijn toepassing: ik wil de string(s) wegschrijven naar een *.ini file, en daar zijn de CRLF paren gewoon nieuwe regels (en dus nieuwe entries in de *.ini file).

    Voor mij blijft dus de komma delimited tekst de beste oplossing, alleen jammer van de problemen met TStringList.CommaText. Misschien kwamen die wel doordat in de string(s) bewaar in een INI file (en is de kombinatie daarvan het probleem). Ik experimenteer nog even verder.

    Toegevoegd:
    ---
    Na enig ge-experimenteer blijkt inderdaad TIniFile het probleem te zijn: de string "een twee", "drie vier" die bv door TStringList.CommaText wordt aangemaakt, wordt door TIniFile.ReadString teruggegeven als een twee", "drie vier en prompt door TStringList.CommaText verkeerd naar een TStringList omgezet. Ik kan dus inderdaad TStrinList.CommaText niet gebruiken om een TStrings om te zetten naar een String en omgekeerd.
    ---

    @CompuChip
    En nog een kleine opmerking
    Misschien kan je beter een lokale kopie van de String maken, en dan "procedure StringToTStrings(const S: string; var T: TStrings)" gebruiken?
    IK weet niet of dat beter is. De variabele 'S' is al een lokale kopie.
    Overigens is het niet zo consequent dat je bij de ene conversie de output als (var-)parameter meegeeft en bij de andere alleen de source als parameter en de output als result.
    Is er een reden dat je niet gewoon van allebei een function of een procedure hebt gemaakt?
    Ik had graag van beide een functie gemaakt (beiden geven iets terug), maar een functie kan geen TStrings teruggeven denk ik (bij mijn weten toch niet ).

    @Allen
    Bedankt voor het meedenken!
    Last edited by Dany; 18-May-04 at 20:24.
    Vriendelijke groeten,
    Dany

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)

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
  •