Funkcja i Acces Violation

0

Napisałem sobie taką oto funkcje na konwersje ISO 8859-2. No i oczywiście <font color="red">Acces Violation</span>... :-8 :-8

[code]function Iso(s: string): string;
var
i,n:integer;
begin
for i:=1 to Length(s) do
begin
case s[i] of
'ą' : Result[i] := '±';
'ś' : Result[i] := '¶';
'ź' : Result[i] := 'Ľ';
'Ą' : Result[i] := 'ˇ';
'Ś' : Result[i] := '¦';
'Ź' : Result[i] := '¬';
else
Result[i] := s[i];
end;
end;
n := pos('Windows-1250', result);
if n = 0 then n := pos(UpperCase('Windows-1250'), UpperCase(result));
if n = 0 then n := pos(LowerCase('Windows-1250'), LowerCase(result));
if n 0 then
begin
delete(s,n-1,(n+11)-(n+1));
insert('iso-8859-2',s,n-1);
end;
end;[/code]

???

0

nie możesz użyć instrukcji case do stringów!!

skorzystaj z if

0

nie możesz użyć instrukcji case do stringów!!

On nie używa case do stringów, tylko do char'ów. Poza tym kod mu się kompiluje, bo przecież wyskakuje access violation, a gdyby coś nie tak było z case, to by się w ogóle nie kompilowało.

0

nu, ja wiem o co chodzi. Odwołujesz się do resulta, czyli do stringa który nie jest nawet zainicjalizowany. ani na początku napisu Result:='' lub SetLength(Result, Length(S));

0

Na początku Result:=S; a w nagłówku procedury daj w parametrach przed S Const.

0

Ja proponuję pozbyć się odwoływania jak do tablicy w result, tj. Result[I]. Na co Ci to?

Po prostu napisz:

result:=result+jakistamznak

0

Spoko.. juz wszystko działa..

1 użytkowników online, w tym zalogowanych: 0, gości: 1