Einzelnen Beitrag anzeigen

Rolf Frei

Registriert seit: 19. Jun 2006
629 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: String vorne mit Nullen auffüllen

  Alt 11. Sep 2022, 13:52
1. Es gibt dafür bereits existierende Funktionen, die das machen.
2. In deinem Code schreibst du in einen nicht allozierten Speicher und erhälst dadurch die AV. Den Result String musst du zuerst entsprechend allozieren, bevor du da ein FillChar machst. Also einfach ein SetLength(Result, ALength) davor einfügen.
3. Mach aus dem ersten Parameter eine Const Parameter. Das solltest du für allen String Parameter machen, die du in der Funktinon nicht veränderst. Ohne const wird der String bei jedem Aufruf der Funktion kopiert, während er bei einem const als Pointer übergeben wird und die Zeit für das Kopierren gespart wird.
Delphi-Quellcode:
function FillString(const AString: String; AChar: Char; ALength: integer): String;
var i:integer;
begin
  SetLength(Result, ALength);
  FillChar(Result, ALength, Ord(AChar));
  Result := copy(AString, 1, ALength) + copy(Result, ALength - Length(AString), ALength);
end;

Geändert von Rolf Frei (11. Sep 2022 um 14:01 Uhr)
  Mit Zitat antworten Zitat