22. Januar 2020 17:20
22. Januar 2020 19:00
ErsterString := CopyStr(OrgString, 1, LastStrPos(...));
ZweiterString := CopyStr(OrgString, LastStrPos(...));
    procedure LastStrPos(String: Text; SubStr: Text): Integer
    var
        Char: Text;
    begin
        while StrLen(String) > 0 do begin
            Char := CopyStr(String, StrLen(String) - ( StrLen(SubStr) - 1), StrLen(SubStr));
            if Char = SubStr then 
                exit(StrLen(String) - ( StrLen(SubStr) - 1));
            String := CopyStr(String, 1, StrLen(String) - 1);
            if StrLen(String) = 1 then
                String := '';
        end;
        exit(0);
    end;
ErsterString := CopyStr(OrgString, 1, LastStrPos(OrgString, ' '));
ZweiterString := CopyStr(OrgString, LastStrPos(OrgString, ' '));
22. Januar 2020 20:08
procedure SplitLastBlank(String: Text; SplitLen:Integer,VAR SubStrArr : ARRAY [10] OF Text): ArrIndex:Integer
var
  CopyStartPos : integer;
  CopyText : Text;
begin
  CLEAR(SubStrArr);  // damit wir keinen Müll zurückliefern 
  String := DELCHR(String,'<'); // Wenn Blanks am Anfang gewünscht sind, dann diese Zeile weg lassen, kann aber zu unerwünschten Leerzeilen führen
  WHILE (String <>'') DO BEGIN
    ArrIndex += 1;                                  // in SubStrArr[ArrIndex] kommt der nächste Text
    CopyText := copystr(String,1,Splitlen);         // wir nehmen erst mal alles was in ein Feld rein geht (oder weniger)
    if strlen(CopyText) < Splitlen THEN BEGIN       // String enthält weniger als die max. Feldlänge (war der Rest)
      SubStrArr[Arrindex] := DELCHR(Copytext,'>');  // fügt den Resttext in das Array ein.
      String := '';                                 // den Resttext aus String löschen, damit wir aus der Schleife raus kommen
    END ELSE BEGIN
      CopyStartpos := Splitlen;                     // ab da +1 haben wir vor, den Rest aus String weiter zu benutzen
      WHILE (CopyText[CopyStartPos]<> ' ') and (CopyStartPos>1) DO // wir suchen nach dem letzten Blank
       CopyStartPos -=1;
      if (CopyStartPos = 1 ) THEN                   // war kein Blank drin, dann nehmen wir alles
        CopyStartpos := Splitlen;
      SubStrArr[Arrindex] := DELCHR(copystr(Copytext,1,CopyStartpos),'>'); 
                                                    // fügt den Text bis zum letzen Blank ohne anhängende Blanks ein
      String := DELCHR(copystr(String,CopyStartPos+1),'<');     
                                   // wir nehmen den Rest hinter dem aktuellen Text und laufen damit die Schleife erneut durch, falls noch was drin ist.
                                   // Wenn Blanks am Anfang gewünscht sind, dann den DELCHR weg lassen, kann aber zu unerwünschten Leerzeilen führen
    END; 
  END;
  // Als Returnwert bekommen wir dann die Anzahl der Felder
end;
23. Januar 2020 09:47