Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Text in 5er Buchstabengruppen anordnen (https://www.delphipraxis.net/149757-text-5er-buchstabengruppen-anordnen.html)

shmia 29. Mär 2010 17:23

Re: Text in 5er Buchstabengruppen anordnen
 
Mal so ganz grundsätzlich:
Man sollte die Aufgabe "Text in 5er Buchstabengruppen anordnen" nicht direkt auf den Labels ausführen sondern eine saubere Funktion schreiben.
Delphi-Quellcode:
function Mach5erGruppen(const text:string):string;
var i:integer;
begin
  Result := text;
  for i := (Length(text) - 1) div 5 downto 1 do
    Insert(' ', result, i * 5 + 1);
end;
Ohne eine eigene Funktion sieht der Sourcecode wie ein Haufen Müll aus; man weiss eine Woche später nicht mehr was da eigentlich gemacht wird.

eragon123 30. Mär 2010 16:00

Re: Text in 5er Buchstabengruppen anordnen
 
Ok war noch ein ganz einfacher Logikfehler drin. Das ganze wird ja mehrmals auf den gleichen String losgelassen. Dabei zählt der dann bereits vorhandene Leerzeichen mit. So hier die funktionierende neue Fassung:
Delphi-Quellcode:
function buchstaben5ergruppen(const text: string): string;
  var i: Integer;
  begin
    Result :='';
    for i := 1 to Length(Text) do
    begin
      if text[i] <> ' ' then
        Result := Result + text[i];
    end;
    for i := (Length(text)-1) div 5 downto 1 do
    begin
      Insert(' ', result, i*5 +1);
      mmotest.Text := mmotest.Text + Result;
    end;
  end;

himitsu 30. Mär 2010 16:22

Re: Text in 5er Buchstabengruppen anordnen
 
Length(text) gibt noch die alte Länge, inkl. der Leerzeichen an, wärend die "neue" Länge nötig wäre.

Delphi-Quellcode:
function buchstaben5ergruppen(const text: string): string;
  var i: Integer;
  begin
    Result := StringReplace(Text, ' ', '', [rfReplaceAll]);
    for i := (Length(Result) - 1) div 5 downto 1 do
      Insert(' ', Result, i * 5 + 1);
  end;

DeddyH 31. Mär 2010 11:28

Re: Text in 5er Buchstabengruppen anordnen
 
Wie wäre es denn so? Ich hab allerdings nicht sonderlich getestet, es kann also noch Fehler enthalten:
Delphi-Quellcode:
function GroupString(const text: string; CountPerGroup: integer;
                     EliminateSpaces: Boolean = true): string;
var i, j: integer;
begin
  SetLength(Result, Length(text) + Length(text) div CountPerGroup);
  j := 0;
  for i := 1 to Length(text) do
    if not EliminateSpaces or (text[i] <> ' ') then
      begin
        inc(j);
        Result[j] := text[i];
        if Succ(j) mod Succ(CountPerGroup) = 0 then
          begin
            inc(j);
            Result[j] := ' ';
          end;
      end;
  SetLength(Result,j);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz