🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.pascal
3 messages
3 total messages Started by Winetou Fri, 25 Sep 2009 17:34
Dynamiczne Tablice SetLength
#92922
Author: Winetou
Date: Fri, 25 Sep 2009 17:34
39 lines
1988 bytes
Witam,

Potrzebuję zamienić Stringa na tablicę Liczb Integer. Napisałem do tego 
funkcję przy użyciu SetLength ale ciągle dostaję błąd w lazarusie 
"Project raised exeption class 'Unknow'." oraz po kliknięciu przycisku 
OK ładne okienko z kodem assemblera. Błąd otrzymuję w linii, w której 
próbuję wpisać wartość do tabeli.

procedure TmainForm.StrToPoints(content: string; var values: TIntegerArray);
var
    licz: Integer;
    count: Integer;
    temp: string;
begin
    count := 0;
    temp := '';
    for licz := 0 to Length(content) - 1 do begin
       if (content[licz] <> ' ') and (content[licz] <> ',') then temp := 
temp + content[licz]
       else if (temp <> '') then begin
          SetLength(values, count + 1);
          values[count] := StrToInt(temp);
          temp := '';
          count := count + 1;
       end;
    end;
    if (temp <> '') then begin
       SetLength(values, count + 1);
       values[count] := StrToInt(temp);
    end;
end;

błąd wyskakuje w linii values[count] := StrToInt(temp); podczas 
pierwszego jej wywołania.

Mógłby mi ktoś zasugerować gdzie popełniłem błąd ?

Pozdrawiam,
Łukasz W.
Re: Dynamiczne Tablice SetLength
#92923
Author: darekm
Date: Fri, 25 Sep 2009 19:45
48 lines
2271 bytes
Winetou pisze:
> Witam,
> 
> Potrzebuję zamienić Stringa na tablicę Liczb Integer. Napisałem do tego 
> funkcję przy użyciu SetLength ale ciągle dostaję błąd w lazarusie 
> "Project raised exeption class 'Unknow'." oraz po kliknięciu przycisku 
> OK ładne okienko z kodem assemblera. Błąd otrzymuję w linii, w której 
> próbuję wpisać wartość do tabeli.
> 
> procedure TmainForm.StrToPoints(content: string; var values: 
> TIntegerArray);
> var
>    licz: Integer;
>    count: Integer;
>    temp: string;
> begin
>    count := 0;
>    temp := '';
>    for licz := 0 to Length(content) - 1 do begin
>       if (content[licz] <> ' ') and (content[licz] <> ',') then temp := 
dlaczego startujesz od zera
  sprawdz co masz w content[0]

> temp + content[licz]
>       else if (temp <> '') then begin
>          SetLength(values, count + 1);
>          values[count] := StrToInt(temp);
>          temp := '';
>          count := count + 1;
>       end;
>    end;
>    if (temp <> '') then begin
>       SetLength(values, count + 1);
>       values[count] := StrToInt(temp);
>    end;
> end;
> 
> błąd wyskakuje w linii values[count] := StrToInt(temp); podczas 
> pierwszego jej wywołania.
> 
> Mógłby mi ktoś zasugerować gdzie popełniłem błąd ?
> 
> Pozdrawiam,
> Łukasz W.


-- 
   Darek
Re: Dynamiczne Tablice SetLength
#92924
Author: Winetou
Date: Fri, 25 Sep 2009 20:46
17 lines
1614 bytes
> dlaczego startujesz od zera
>  sprawdz co masz w content[0]

Faktycznie ... dopiero zaczynam w pascalu (po dłuższej przerwie 
poświęconej innym językom programowania) i jakoś nie przyszło mi to do 
głowy ... szczególnie że wrzuciłem kilka rzeczy do watch list w tym 
licznik z pętli i gdy wysypywała mi się pętla miał on wartość 0.

Teraz rozumiem w czym był problem i gdzie był błąd ... siedziałem i 
dłubałem w tym tak długo, że pewno bym tego nie zauważył :) czasami 
przydaje się "świeże spojrzenie".

Wielkie dzięki za pomoc :D wszystko fajno śmiga.

Pozdrawiam,
Łukasz W.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads