Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Delphi - zapis do stringu

...
var PomocnyString : string;
    i : integer;
begin

  for i:= 1 to StrLen(PChar(s)) do
   begin
    if (s[i] <> ' ') then
!!!       PomocnyString[i] := s[i]
    else
      break;
   end;
end;

Na radku s temi vykricniky mi vzdycky vyhodi Range check error, ale nechapu proc. s je parametr typu string a mezera v nem urcite je. Co chci ,aby to delalo: Do promenne PomocnyString potrebuju zkopirovat cast retezce s az po mezeru. Nebo se to snad dela uplne jinak? Pls, poradte mi.

Předmět Autor Datum
jestli chceš z jednoho stringu do druhého od začátku do mezery: helpString:=copy(s,1,pos(' ',s)); nový
AZOR 26.08.2006 21:47
AZOR
Diky, ja vedel, ze to pujde nejak elegantneji, ale v helpu porad ne a ne najit tu spravnou funkci. P… nový
Andreas 26.08.2006 21:53
Andreas
Doporucuji v indexu najit: string handling routines dostanes seznam vsech funkci pro praci s retezci nový
Jan Fiala 26.08.2006 21:56
Jan Fiala
Chybu ti o zakrici, protoze pristupujes k prvku retezce, ktery neexistuje. PomocnyString je prazdny.… nový
Jan Fiala 26.08.2006 21:55
Jan Fiala
Ešte dodám že dĺžka reťazca sa nastavuje prcedúrou SetLength. AZORov príklad ti spraví kópiu reťazc… poslední
absolutčávo 26.08.2006 23:05
absolutčávo

Chybu ti o zakrici, protoze pristupujes k prvku retezce, ktery neexistuje. PomocnyString je prazdny.

Pokud chces znat delku retezce, pouzij funkci Length(), nebudes muset retezec pretypovavat na PChar.

Tvuj puvodni upraveny priklad:

var PomocnyString : string;
    i : integer;
begin

  for i:= 1 to Length(s) do
   begin
    if (s[i] <> ' ') then
       PomocnyString := PomocnyString + s[i]
    else
      break;
   end;
end;

Samozrejme reseni od Azora je mnohem efektivnejsi...

Zpět do poradny Odpovědět na původní otázku Nahoru