Results 1 to 10 of 10

Thread: TStringList lees foutje

  1. #1

    TStringList lees foutje

    Hallo,

    Wat gaat hier fout?

    Code:
      for R := 0 to L.Count - 1 do
      begin
        for I := 0 to Temp_Teller do
        begin
               if Pos(L.Strings[R], Temp_Arr[I]) <> 0 then
          begin
             L.Strings[R] := Temp_Arr[I];           // Dit geeft een Error
             Break;                                 // In Temp_Arr[I] staat wel een text
          end;
        end;
    end;
    H.G. Frans

  2. #2
    Ah, de beruchte "een error". Heel lastig is die ;-)
    1+1=b

  3. #3
    Wat GolezTrol zeg.
    En:
    Compileren met -Criot graag.
    En iets meer context zou ook wel handig zijn.

    Bart

  4. #4
    Misschien een paar breakpoints zetten en door je code heen steppen?

    Kan het zijn dat je in de tweede for loop vergeten bent om -1 toe te voegen?

  5. #5
    Fout gevonden. Als L.Strings[R] gesorteerd is dan is het niet mogelijk om de inhoud te veranderen.

    Iedereen bedankt.

  6. #6

  7. #7
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,673
    Quote Originally Posted by Dubbeld View Post
    Fout gevonden. Als L.Strings[R] gesorteerd is dan is het niet mogelijk om de inhoud te veranderen.
    Dat vind ik een rare veronderstelling. Een sortering mag nooit read only worden. En ik haal dit niet uit je stukje code.
    Delphi is great. Lazarus is more powerfull

  8. #8
    Quote Originally Posted by jkuiper View Post
    Dat vind ik een rare veronderstelling. Een sortering mag nooit read only worden. En ik haal dit niet uit je stukje code.
    Ik neem aan dat hij bedoelt dat je de indexering niet kunt wijzigen (L.Exchange(Index1,Index2) bijv.)

    Maar bij gebrek aan relevante context wordt het meer een glazen bol ervaring.

    Bart

  9. #9
    Je mag een bestaand item waarschijnlijk niet overschrijven in een sorted stringlist, omdat dan het item ook naar een andere plek zou moeten springen.
    Je kan het item vast wel verwijderen en met de nieuwe waarde toevoegen, maar functioneel is dat ook een risico, aangezien je een loop hebt die met numerieke indexes werkt, en je daarmee items dubbel kan checken, of juist helemaal over kan slaan. Het beste is denk ik om Sorted op False te zetten voor de loop, en weer op True na de loop.
    1+1=b

  10. #10
    Senior Member
    Join Date
    Aug 2004
    Location
    Rotterdam
    Posts
    123
    Dat is geen rare veronderstelling. Staat gewoon in System.Classes zo geprogrammeerd:

    Delphi Code:
    1. procedure TStringList.Put(Index: Integer; const S: string);
    2. begin
    3.   if Sorted then Error(@SSortedListError, 0); <<< daar dus
    4.   if Cardinal(Index) >= Cardinal(FCount) then
    5.     Error(@SListIndexError, Index);
    6.   Changing;
    7.   FList[Index].FString := S;
    8.   Changed;
    9. end;

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
  •