21. August 2019 09:15
21. August 2019 09:25
21. August 2019 09:29
procedure IntelligentTextSplit(OrgText: Text; MaxSplitLength: Integer;var SplittedText: List of [Text])
var
CurrSplitText: Text;
PossibleSplitText: Text;
i: Integer;
begin
clear(SplittedText);
repeat
OrgText := DelChr(OrgText, '<>', ' ');
if StrLen(OrgText) <= MaxSplitLength then
CurrSplitText := OrgText
else begin
PossibleSplitText := CopyStr(OrgText, 1, MaxSplitLength);
if (CopyStr(OrgText, MaxSplitLength, 1) = ' ') or (PossibleSplitText = DelChr(PossibleSplitText, '=', ' ')) then
CurrSplitText := PossibleSplitText
else
for i := MaxSplitLength downto 1 do
if PossibleSplitText[i] = ' ' then begin
CurrSplitText := CopyStr(OrgText, 1, i);
break;
end;
end;
OrgText := DelChr(OrgText, '<', CurrSplitText);
SplittedText.Add(DelChr(CurrSplitText, '>', ' '));
until (StrLen(OrgText) = 0);
for i := SplittedText.Count() to 10 do // dirty fix for: access a key which does not exist raise an error
SplittedText.Add('');
end;
21. August 2019 10:08
21. August 2019 11:01
SplittStrFill(pStr : Text;VAR pStrArr : ARRAY [4] OF Text,pMaxStrlen : Integer)Arrind : Integer
VAR
StrArr : ARRAY [20] OF Text;
I: Integer;
I2 : Integer;
if pStr='' then
EXIT(0);
CLEAR(pStrArr);
ArrInd:=1;
FOR i :=1 TO STRLEN(pStr) DO BEGIN // String nach jedem Leerzeichen trennen und den Text in ein Array- Feld speichern
IF pStr[i] = ' ' THEN
ArrInd+=1
ELSE
StrArr[ArrInd] += COPYSTR(pStr,i,1);
END;
// Text wieder so zusammenfügen, das in jedem Zielfeld möglichst viel Text steht
CLEAR(pStrArr);
i2 := 1;
I := 1;
While (I <= ArrInd) DO BEGIN
if (strlen(pStrArr[I2])+strlen(StrArr[i]) < pMaxStrlen) then begin // Text passt in das aktuelle Zielfeld rein
pStrArr[i2] += (' '+StrArr[i]);
delchr(pStrArr[i2],'<'); // Leerzeichen am Anfang wollen wir nicht
i +=1;
END ELSE
if pStrArr[I2] <> '' then // Text passt nicht, könnte ab er in ein leeres passen
i2 +=1;
ELSE BEGIN // Zielfeld ist leer, passt aber trotzdem nicht
pStrArr[i2] := copystr(StrArr[i],1,pMaxStrlen);
i2 +=1;'
StrARrr[i] := copystr(StrArr[i],pMaxStrlen+1);
END;
END;
if pStrrArr[i2] = '' THEN // das letzte Zielfeld ist leer
i2 -=1;
ArrInd := i2;
22. August 2019 16:29