Entwickler-Ecke

Sonstiges (Delphi) - gibts den php explode-befehl auch in delphi


FlameDiver - Sa 25.12.04 16:35
Titel: gibts den php explode-befehl auch in delphi
hi wie ihr der überschrift entnehmen könnt wollte ich fragen obs diesen explode befehl auch in delphi gibt. ich braüchte den.


raziel - Sa 25.12.04 16:39

Ja, hier [http://www.delphi-forum.de/viewtopic.php?t=32152].


Christian S. - Sa 25.12.04 16:40

Hallo!

Das geht über eine Stringlist. Du setzt den "Delimiter" der Stringlist auf das entsprechenden Trennzeichen und schreibst Deinen String dann in "DelimitedText". Dann enthält die Stringlist die einzelnen Elemente des Strings.

MfG
Christian


FlameDiver - Sa 25.12.04 16:51

boa danke für die schnelle hilfe :D

noch eine Frage wie kann ich Einstellen das er beim Delimiter nicht auch Leerzeichen als Trennzeichen nimmt?


FlameDiver - Sa 25.12.04 17:31

erstmal hier ist meine function:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function filename(path:string):string;
var
list:tstringlist;
z:integer;
begin
list := tstringlist.Create;            //list erschaffen
list.DelimitedText := path;            //sting einfügen
list.Delimiter := '\';                 //delimiter setzen

z := list.Count-1;                     //letztes item definieren
path := list.Strings[z];               //item zuweise
result := path;                        //resultat festlegen
end;


aber ich hab bestimmt was falsch...

ich will einen pfad an den \-zeichen trennen und den letzten davon haben


Tino - Sa 25.12.04 18:09

FlameDiver hat folgendes geschrieben:
aber ich hab bestimmt was falsch...

Bestimmt? Hast du deinen Sourcecode nicht ausprobiert?

Du solltest noch

Delphi-Quelltext
1:
list.free;                    

aufrufe.

Gruß
Tino


Christian S. - Sa 25.12.04 18:12

Tino hat folgendes geschrieben:
Du solltest noch

Delphi-Quelltext
1:
list.free;                    

aufrufe.
Und das Ganze vor allem noch einen Speicherschutzblock packen! :mahn: ;-)

//edit: Mal versucht, erst den Delimiter zu setzen und dann erst den Text?


FlameDiver - Sa 25.12.04 18:15

wann muss ich das den aufrufen? nach den createn?


Tino - Sa 25.12.04 18:18

Nein, dann wenn du die liste nicht mehr benötigst.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function filename(path:string):string;
var
list:tstringlist;
z:integer;
begin
  list := tstringlist.Create;            //list erschaffen
  Try  
    list.Delimiter := '\';                 //delimiter setzen
    list.DelimitedText := path;            //sting einfügen

    z := list.Count-1;                     //letztes item definieren
    path := list.Strings[z];               //item zuweise
  Finally
    list.Free;
  End;

  result := path;                        //resultat festlegen
end;


FlameDiver - Sa 25.12.04 18:21

ok :idea:

aber wie mach ich das jetzt das die leerzeichen icht mehr als trennzeichen angesehen werden?


Tino - Sa 25.12.04 18:25

FlameDiver hat folgendes geschrieben:
aber wie mach ich das jetzt das die leerzeichen icht mehr als trennzeichen angesehen werden?

Wo liegt denn das Problem? Schau dir doch mal meinen Code oben an. Dort wird als Trennzeichen das \-Zeichen genommen und nicht das Leerzeichen.


FlameDiver - Sa 25.12.04 18:28

den versteh ich nicht warum er bei mir die auch am leerzeichen trennt


StefanH - Sa 25.12.04 18:34

du kannst alternativ auch ExtractStrings benutzen :roll:


Tino - Sa 25.12.04 18:34

Sorry, habe gerade erfahren das die TStringlist auch bei einem Leerzeichen trennt... :-(


FlameDiver - Sa 25.12.04 18:39

ach soein mist :D naja danke für die hilfe... gibts da nicht noch ein anderen typ bei dem man saowas amchen könnte?

oder ich mach einfach erst einen array daraus und denn erstetz ich alle leerzeichen mit tilde zeichen :D

ich hab da auch ne funktion


Delphi-Quelltext
1:
2:
3:
for i:=0 to length(text1)-1 do text1[i]:=CHR(0);
Move(edit1.text[1],text1[0],255);
text2 := replace(x,text1);


und


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function replace(zahl: integer; text:array of char):string;
begin
while x<=255 do
begin
buchstabe:=text1[x];
if buchstabe = ' ' then buchstabe := '~';

text2:=text2+buchstabe;
inc(x);
end;
replace := text2;
end;


damit müste das den doch gehen oder? und wenn ich den titel hab mach ich das wieder zurück.


Tino - Sa 25.12.04 18:43

Was spricht gegen die Funktion die hier gepostet wurde? http://www.delphi-forum.de/viewtopic.php?t=13017&highlight=explode


FlameDiver - Sa 25.12.04 18:47

oh die hab ich noch garnicht gesehen. :D nur sonne andere. aber ich finde meine idee auch gut :D