Oder mit ganz wenigen String-Kopierorgien und einem wahlfreien String den man dort einschieben kann:
Delphi-Quellcode:
function StrInsertEveryNthPos(
const AStr, AInsertStr:
string; APos: integer ):
string;
var
OffSet : integer;
ResLen, ResIdx, StrIdx, InsIdx: integer;
begin
// OffSet for ZEROBASED STRINGS
OffSet := 1 - low(
string );
// Calculate result length
ResLen := ( Length( AStr )
div APos );
if Length( AStr )
mod APos = 0
then
Dec( ResLen );
ResLen := Length( AInsertStr ) * ResLen;
ResLen := ResLen + Length( AStr );
SetLength( Result, ResLen );
// Build result
ResIdx := 1;
for StrIdx := 1
to Length( AStr )
do
begin
Result[ ResIdx - OffSet ] := AStr[ StrIdx - OffSet ];
Inc( ResIdx );
// Insert the AInsertStr
if ( StrIdx
mod APos = 0 )
and ( StrIdx < Length( AStr ) )
then
for InsIdx := 1
to Length( AInsertStr )
do
begin
Result[ ResIdx - OffSet ] := AInsertStr[ InsIdx - OffSet ];
Inc( ResIdx );
end;
end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)