AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

String zerlegen; Trenner

Ein Thema von KPBecker · begonnen am 23. Okt 2007 · letzter Beitrag vom 24. Okt 2007
Antwort Antwort
Seite 2 von 3     12 3   
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: String zerlegen; Trenner

  Alt 23. Okt 2007, 17:47
Delphi-Quellcode:
function cuttext(AString: string; delimiter: Char):array of string
var i: integer;
begin
setlength(result, 0);
i := 0;
while (pos(delimiter, astring) <> 0)then
 begin
    setlength(result, i+1);
    result[i] := copy(astring, 0, pos(delimiter, astring)-1);
    delete(astring, 1, pos(delimiter, astring));
    inc(i);
 end;
end;
Das dürfte doch deinem gewünschten sehr nahe kommen
Code ungetestet, habe den nur schnell hier geschrieben!

EDIT:

Habe die Boolean rausgenommen, ich glaub die Abfrage nach dem Trennzeichen düfte genügen
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#12

Re: String zerlegen; Trenner

  Alt 23. Okt 2007, 17:50
Hi,

Hab mal was gebaut. Hab mich bisschen an der VCL Orientiert aber passt schon

Delphi-Quellcode:
interface

uses ...;

type
  TStringlist = class(Classes.TStringlist)
  private
    FDelText: String;
    procedure SetDelimitedText(const Value: String);
  public
    property DelimitedText: String read FDelText write SetDelimitedText;
  end;

implementation

procedure TStringlist.SetDelimitedText(const Value: String);
var P,tmp: PChar;
    S: String;
begin
  FDelText := Value;
  BeginUpdate;
    Clear;
    P := PChar(Value);
    while P^ <> #0 do
    begin
      tmp := P;
      while (P^ >= ' ') and (P^ <> Delimiter) do // >= ist wichtig.. Im Original ists nur >
        inc(p);
      SetString(S,tmp,P-tmp);
      Add(S);
      inc(p);
    end;
  EndUpdate;
end;

// Anwendung

procedure TForm1.Button1Click(Sender: TObject);
var S: TStringlist;
begin
  S := TStringlist.Create;
  try
    S.Delimiter := ';';
    S.DelimitedText := 'Ich;schreibe was;hier hin;!!!';
    Memo1.Text := S.Text;
  finally
    S.Free;
  end;
end;
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
KPBecker

Registriert seit: 1. Mär 2004
Ort: Mannheim
120 Beiträge
 
Delphi 2010 Architect
 
#13

Re: String zerlegen; Trenner

  Alt 23. Okt 2007, 17:55
Vielen Dank an die Helfer,

Ähnliches habe ich in einem anderen Programm, als ich von 'delimitedText' noch nichts wußte, auch schon als Lösung geschrieben.
Ich hoffte, daß eine eingebaute Funktion eine einfache Möglichkeit wäre.

Klaus-Peter
  Mit Zitat antworten Zitat
KPBecker

Registriert seit: 1. Mär 2004
Ort: Mannheim
120 Beiträge
 
Delphi 2010 Architect
 
#14

Re: String zerlegen; Trenner

  Alt 23. Okt 2007, 18:00
Den Vorschlag des neutralen Generals werde ich mir auch noch einmal unter dem Aspekt "praktisches Beispiel für Modifikation einer Funktion" anschauen.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: String zerlegen; Trenner

  Alt 23. Okt 2007, 18:03
Wir haben doch jede Menge solcher Funktionen in der CL...

Eine einfache Suche hätte genügt.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#16

Re: String zerlegen; Trenner

  Alt 23. Okt 2007, 18:07
Wenn man eine wasserdichte Lösung braucht, um CSV-Dateien zu lesen:
CSV Hilfsfunktionen
Damit darf dann auch das Trennzeichen in den Nutzdaten enthalten sein.
Andreas
  Mit Zitat antworten Zitat
KPBecker

Registriert seit: 1. Mär 2004
Ort: Mannheim
120 Beiträge
 
Delphi 2010 Architect
 
#17

Re: String zerlegen; Trenner

  Alt 23. Okt 2007, 18:10
Hallo, Manuel,

die Frage war ja gerade nicht, wie oft schon jemand solche Funktionen selbst geschrieben hat. Das habe ich bei der Suche gesehen.

Die Frage war nach einer Delphi-eigenen Funktion (die aber auch funktionieren sollte).

Klaus-Peter
  Mit Zitat antworten Zitat
KrasserChecker

Registriert seit: 21. Jul 2004
120 Beiträge
 
#18

Re: String zerlegen; Trenner

  Alt 23. Okt 2007, 18:14
Ich frage mich ja, warum immer alles so umständlich sein muß
Es geht doch nur darum, einen Text der an allen Vorkommen von ; aufzutrennen.
Da die Stringliste hier ja tatsächlich nicht so recht mit "DelimitedText" funktioniert machen wir es doch einfach(!) selbst:
Delphi-Quellcode:
procedure SplitString(iTextToSplit: string; iDelimiter: Char; ioSL: TStrings);
begin
  ioSL.Clear;

  ioSL.Text := StringReplace(iTextToSplit, iDelimiter, sLineBreak, [rfReplaceAll]);
end;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#19

Re: String zerlegen; Trenner

  Alt 23. Okt 2007, 18:40
Hallo Klaus-Peter,

lies dir mal die Online-Hilfe zur Eigenschaft StrictDelimiter durch - das könnte deinen Vorstellungen entsprechen.

Grüße vom marabu
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#20

Re: String zerlegen; Trenner

  Alt 23. Okt 2007, 19:11
Zitat von Phoenix:
Aber das geht glaub ich erst seit Delphi 5.
Nur der Vollständigkeit halber: ab Delphi 6 verfügbar. Delphi 5's TStringList hatte keine DelimitedText oder Delimiter Eigenschaft.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf