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