Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Split Funktion für Delphi???


delphist - Sa 28.12.02 22:09
Titel: Split Funktion für Delphi???
Such eine String$-Split-Funktion für Delphi!!!
Ein Beispiel:
String$ := 'Otto:Kasulke:Unter den Linden 1000000:99999:Berlin'
jetzt möchte ich den String in Einzelteil vor dem Doppelpunkt und nach dem Doppelpunkt zerlegen...
Kann mir jemand vielleicht jemand folgende Funktion für VB übersetzen:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
:::VB CODE:::

Autor:   Maximilian Marx Homepage:   http://www.mmmw.my100megs.com/ 
Beschreibung 
Mit den Funktionen Left$(...) und Mid$(...) lassen sich Teilstrings aus einem Gesamtstring ermitteln. Mit der nachfolgenden Routine möchten wir Ihnen eine Universalroutine vorstellen, welche einen String auf ein bestimmtes Trennzeichen prüft und entweder den linken Teilstring oder den rechten Teilstring zurückgibt. Ist im Gesamtstring das Trennzeichen nicht enthalten, wird ein Leerstring zurückgegeben.

Public Function SplitString(ByVal strText As String, _
  ByVal strChars As String, ByVal Mode As Integer) As String
  
  'String in zwei Teile splitten
  'und entweder linken Teil (Mode = 1)
  'oder rechten Teil (Mode = 2) zurückgeben
  
  Dim sPos As Long
  
  sPos = InStr(strText, strChars)
  If sPos > 0 Then
    'strChars ist in strText enthalten
    If Mode = 1 Then
      'linke Teilstring zurückgeben
      SplitString = Left$(strText, sPos - 1)
    Else
      'rechten Teilstring zurückgeben
      SplitString = Mid$(strText, sPos + Len(strChars))
    End If
  Else
    'strChars ist in strText nicht enthalten
    SplitString = ""
  End If
End Function
Nachfolgend ein paar Beispiele:

strText = "Willkommen im vb@rchiv"

'Ergebnis: Willkommen 
strLeft = SplitString(strText, "im", 1)

'Ergebnis:  vb@rchiv
strRight = SplitString(strText, "im", 2)

'Ergebnis: W
strLeft = SplitString(strText, "i", 1)

'Ergebnis: llkommen im vb@rchiv
strRight = SplitString(strText, "i", 2)


Das wäre super!!!
mfg delphist[/code][/url]


Michael Stenzel - So 29.12.02 04:39

Hallo hier der Code

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
function SplitString(strText, strChar : string; Mode: integer):string;
var sPos : integer;

begin
     Result := '';
     sPos := Pos(strChar,strText);
     if sPos > 0 then begin
        if Mode = 1 then begin
           Delete(strText,sPos,Length(strText));
           Result := strText;
        end else begin
           Delete(strText,1,sPos + Length(strChar));
           Result := strText;
        end
     end;
end;


Viel Spaß damit
Michael.


Udontknow - Mo 30.12.02 11:23

Die Funktionen WordCount sowie ExtractWord in der Unit JvStrUtils (JCL-Package, Freeware) erledigen das:


Quelltext
1:
2:
for i:=1 to WordCount(MyString,[':']) do
  Memo1.Lines.Add(ExtractWord(i,MyString,[':']));


Cu, :)
Udontknow