/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Splitte en string op til et array
Fra : Michael


Dato : 05-06-01 16:55

Findes der en kommando til at splitte en string til en array?

F .eks. jeg har en string str
str := 'ord1 ord2 ord3';

som jeg vil havde lagt over i en array sådan her
arr[0] := ord1;
arr[1] := ord2;
arr[2] := ord3;

er der en kommande der gør det eller skal jeg selv lave den?


/md



 
 
Thomas P (05-06-2001)
Kommentar
Fra : Thomas P


Dato : 05-06-01 18:12

> som jeg vil havde lagt over i en array sådan her
> arr[0] := ord1;
> arr[1] := ord2;
> arr[2] := ord3;
>
> er der en kommande der gør det eller skal jeg selv lave den?

Dem, der forstand har på de goe gamle string-funktioner vil sikkert bombe
mig hvis jeg går for meget i detaljer med min løsning Hvorfor så ikke
bare køre hele strengen gennem en løkke, der hele tiden stykker et ord
sammen indtil der kommer et mellemrum...

--
- Thomas
~~~~~~~~
.... http://www.FlowCode.f2s.com - where code flows
.... mailto:blomme@post.com - where email goes



Michael (05-06-2001)
Kommentar
Fra : Michael


Dato : 05-06-01 20:12

>Hvorfor så ikke
> bare køre hele strengen gennem en løkke, der hele tiden stykker et ord
> sammen indtil der kommer et mellemrum...

Det har jeg også gjordt, men jeg er vand til fra andre sprog at der er en
"split" funktion som gør det for mig og det er alt andet lige noget nemmere.

/md



Harald (05-06-2001)
Kommentar
Fra : Harald


Dato : 05-06-01 20:27

"Michael" <michael@danfamily.org> skrev i en meddelelse
news:Fh7T6.3606$R84.620601@news010.worldonline.dk...
> Findes der en kommando til at splitte en string til en array?
>
> F .eks. jeg har en string str
> str := 'ord1 ord2 ord3';
>
> som jeg vil havde lagt over i en array sådan her
> arr[0] := ord1;
> arr[1] := ord2;
> arr[2] := ord3;
>
> er der en kommande der gør det eller skal jeg selv lave den?

Hej

Hvad med noget i denne stil:

procedure SplitLine(Line : String;Strings : TStrings);
var
i : integer;
begin
Strings.Clear;
if Line='' then
exit;
Repeat
i:=pos(#32,line);
if i=0 then
i:=Length(Line)+1;
Strings.Add(copy(Line,1,i-1));
Delete(Line,1,i);
until Line='';
end;

Mvh
HK



FreeAll (07-06-2001)
Kommentar
Fra : FreeAll


Dato : 07-06-01 16:59

Du skal bruge dette. Arr er bare et dynamisk array, men det er nemt nok at
omsætte. CountChars tæller hvor mang Chr der er i Str. ParseIt giver dig et
bestemt nummer ord. Str er strengen, Chr er den char der deler ordene
(næsten altid #32 ( )), Position er det nummer ord du vil have. Husk man
skal gå fra 1 til CountChars(str,#32)+1 da der er 1 ord mere end der er
mellemrum.

var
Form1: TForm1;
arr: array of string;

implementation

{$R *.DFM}

function CountChars(Str: string; Chr: char): integer;
var
i: integer;
begin
result := 0;
for i:=1 to length(str) do
if str[i] = chr then inc(result);
end;

function ParseIt(Str: string; Chr: Char; Position: integer): string;
var
i: integer;
begin
if Position <= 0 then Str := '';
// if Position > CountChars(str,chr) then str := '';
for i:=1 to Position - 1 do
begin
if pos(Chr,Str) <= 0 then Str := '';
delete(Str,1,pos(Chr,Str)+length(Chr)-1);
end;
if pos(Chr,Str) > 0 then delete(Str,pos(Chr,Str),length(Str));
result := Str;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
str: string;
i: integer;
begin
str := 'jensen fra vandeløse er grim';
for i:=1 to CountChars(str,#32)+1 do
begin
Setlength(arr,length(arr)+1);
arr[length(arr)-1] := ParseIt(str,#32,i);
end;
for i:=0 to length(arr)-1 do
ListBox1.Items.Add(arr[i]);
end;


"Michael" <michael@danfamily.org> wrote in message
news:Fh7T6.3606$R84.620601@news010.worldonline.dk...
> Findes der en kommando til at splitte en string til en array?
>
> F .eks. jeg har en string str
> str := 'ord1 ord2 ord3';
>
> som jeg vil havde lagt over i en array sådan her
> arr[0] := ord1;
> arr[1] := ord2;
> arr[2] := ord3;
>
> er der en kommande der gør det eller skal jeg selv lave den?
>
>
> /md
>
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste