String teilen

TS-JC

Erfahrenes Mitglied
In E:\WINDOWS\system32\drivers\etc befindet sich die Datei services
die sieht z.b. so aus:
systat 11/tcp users #Active users

nun möchte ich die einzelnen textstücke bekommen
in php wäre es, mit explode glaube ich, recht einfach
nur hier bekomme ich es nicht hin

mein ergebnis soll z.b. so sein:
var1 = "systat"
etc.

hat jemand ne idee?
 
Was denn jetzt, Java oder Delphi? Oder hast du einfach mal so in beide Foren gepostet? Wie auch immer; zu Delphi hab ich das hier gefunden:
Code:
procedure TForm1.Button1Click(Sender: TObject) ;
var
   A: TStringList;
begin
   A := TStringList.Create;
   try
     Split(' ', 'your delphi guide', A) ;
     ShowMessage(a[0]) ; //your
     ShowMessage(a[1]) ; //delphi
     ShowMessage(a[2]) ; //guide
   finally
     A.Free;
   end;
end;

}
procedure Split
   (const Delimiter: Char;
    Input: string;
    const Strings: TStrings) ;
begin
   Assert(Assigned(Strings)) ;
   Strings.Clear;
   Strings.Delimiter := Delimiter;
   Strings.DelimitedText := Input;
end;
Quelle: http://delphi.about.com/cs/adptips2002/a/bltip1102_5.htm

Peter
 
Ich bin jetzt mal mit dem Befehl

copy(var, anfang, länge);

Code:

program test;

uses crt;

VAR s,s2 : STRING;
a : char;
begin


s := 'abcdefghij';

s2 := copy (s, 3, 4);

writeln (s2);

a := readkey;
end.

an die Sache rangegangen. Hat funktioniert. Weiß nun noch jemand wie ich leerzeichen rausbekommen
 
So findest Du ein Leerzeichen in einem String

Position:=Pos(' ' , DeinString);

liefert den Index des Ersten Leerzeichens in DeinString.
Siehe Hilfe zu Pos()
In der Hilfe zu
PosEx()
liest Du, wie du weitere Leerzeichen finden kannst.
 
also, da man (ich) nicht genau weiß, wie viele einzelne teilstrings die datei hergibt, hab ich einfach mal ein array von 1 bis 100 deklariert. bei turbopascal ist das leider nicht flexibler möglich.
So tuts aber:
Code:
PROGRAM strings;
USES Crt;

VAR stri :string;
VAR k,i:integer;
VAR arr: ARRAY[1..100] OF string;

BEGIN
i:=1;
arr[i]:='';
stri:='Hallo Welt, ich liebe Euch!';
FOR k:=1 TO length(stri) DO
BEGIN
IF stri[k]<>' ' THEN arr[i]:=arr[i] + stri[k]
               ELSE BEGIN
                    inc(i);
                    arr[i]:='';
                    END;
END;

ClrScr;
FOR k:=1 TO 20 DO
Writeln(arr[k]);
readln;

END.

viel spass
DJ2K
 
warum einfach, wenns auch kompliziert geht =)

naja, thx für die hilfe, ich hab es jetz einfach so gelassen, hat beim speichern die zeichen wohl auch von alleine entfernt

egal, war ne projektarbeit, die ist vorbei, kann eh nix mehr dran ändern
 

Neue Beiträge

Zurück