Einzelnen Beitrag anzeigen

Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
345 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: TStringList erzeugt Zeilenumbruch am Ende?

  Alt 23. Jun 2022, 18:27
Hallo, ich knüpfe hier einfach an, weil es sich um die gleiche Thematik handelt.

Meinen LoremIpsum Generator habe ich etwas verbessert.

Hier das Ergebnis.

Vielleicht möchte der Ein oder Andere sich um Fehlerkorrektur bemühen?

Delphi-Quellcode:
unit Unit_LoremIpsum;

interface

uses
  SysUtils, Classes;

type
  TLoremIpsumVariant = (Standard, Bavaria);

function CreateLoremIpsum(aWorte: Integer): String; overload;
function CreateLoremIpsum(aWorte: Integer; aAbsatz: Integer): String; overload;
function CreateLoremIpsum(aWorte: Integer; aAbsatz: Integer; aUsePre: Boolean): String; overload;
function CreateLoremIpsum(aWorte: Integer; aUsePre: Boolean): String; overload;
function CreateLoremIpsum(aWorte: Integer; aVariante: TLoremIpsumVariant): String; overload;
function CreateLoremIpsum(aWorte: Integer; aVariante: TLoremIpsumVariant; aPunktierung: Boolean): String; overload;
function CreateLoremIpsum(aWorte: Integer; aVariante: TLoremIpsumVariant; aPunktierung: Boolean; aKommata: Boolean): String; overload;
function CreateLoremIpsum(aWorte: Integer; aPunktierung: Boolean; aKommata: Boolean): String; overload;
function CreateLoremIpsum(aWorte: Integer; aAbsatz: Integer; aPunktierung: Boolean; aKommata: Boolean): String; overload;
function CreateLoremIpsum(aWorte: Integer; aAbsatz: Integer; aUsePre: Boolean; aVariante: TLoremIpsumVariant; aPunktierung: Boolean; aKommata: Boolean): String; overload;

implementation

var
  Absatz: Integer;
  UsePre: Boolean;
  Variante: TLoremIpsumVariant;
  Punktierung: Boolean;
  Kommata: Boolean;

const
  LoremIpsum_Pre = 'Lorem ipsum ';
  LoremIpsum: Array [1 .. 117] of string = ('dolor', 'sit', 'amet', 'consetetur', 'sadipscing', 'elitr', 'sed', 'diam', 'nonumy', 'eirmod', 'tempor', 'invidunt', 'ut', 'labore', 'et', 'dolore', 'magna', 'aliquyam', 'erat',
    'voluptua', 'at', 'vero', 'eos', 'accusam', 'justo', 'duo', 'dolores', 'ea', 'rebum', 'stet', 'clita', 'kasd', 'gubergren', 'no', 'sea', 'takimata', 'sanctus', 'est', 'lorem', 'ipsum', 'duis', 'autem', 'vel', 'eum',
    'iriure', 'in', 'hendrerit', 'vulputate', 'velit', 'esse', 'molestie', 'consequat', 'illum', 'eu', 'feugiat', 'nulla', 'facilisis', 'eros', 'accumsan', 'iusto', 'odio', 'dignissim', 'qui', 'blandit', 'praesent',
    'luptatum', 'zzril', 'delenit', 'augue', 'te', 'feugait', 'facilisi', 'consectetuer', 'adipiscing', 'elit', 'nonummy', 'nibh', 'euismod', 'tincidunt', 'laoreet', 'aliquam', 'volutpat', 'wisi', 'enim', 'ad', 'minim',
    'veniam', 'quis', 'nostrud', 'exerci', 'tation', 'ullamcorper', 'suscipit', 'lobortis', 'nisl', 'aliquip', 'ex', 'commodo', 'nam', 'liber', 'cum', 'soluta', 'nobis', 'eleifend', 'option', 'congue', 'nihil', 'imperdiet',
    'doming', 'id', 'quod', 'mazim', 'placerat', 'facer', 'possim', 'assum', 'amet');

  LoremIpsum_Bavaria_Pre = 'Bavaria ipsum ';
  LoremIpsum_Bavaria: Array [1 .. 389] of string = ('ghupft', 'wia', 'gsprunga', 'pfiad', 'de', 'guad', 'freibia', 'eam', 'oa', 'meidromml', 'a', 'bissal', 'aba', 'fei', 'moand', 'deandlgwand', 'da', 'buachbinda',
    'wanninger', 'schneid', 'milli', 'maßkruag', 'wos', 'des', 'muas', 'ma', 'hoid', 'kenna', 'nix', 'gwiass', 'woass', 'ned', 'af', 'etza', 'kimmt', 'vergeltsgott', 'wann', 'griagd', 'nacha', 'z', 'dringa', 'leonhardifahrt',
    'ham', 'radi', 'resch', 'xaver', 'haferl', 'greichats', 'is', 'liab', 'griasd', 'eich', 'midnand', 'weißwiaschd', 'mim', 'radl', 'foahn', 'hendl', 'schdeckalfisch', 'gscheit', 'unbandig', 'maibam', 'mechad', 'gschicht',
    'sauba', 'scheans', 'marterl', 'woar', 'hod', 'dringma', 'aweng', 'maß', 'und', 'no', 'landla', 'gaudi', 'foidweg', 'hi', 'schdarmbeaga', 'see', 'mongdratzal', 'ewig', 'drei', 'dog', 'geh', 'mi', 'maderln', 'fingahaggln',
    'anbandeln', 'schmankal', 'radler', 'weibaleid', 'namidog', 'marei', 'i', 'bin', 'woschechta', 'bayer', 'ebba', 'klampfn', 'enzian', 'basd', 'scho', 'obazda', 'bitt', 'prosd', 'spernzaln', 'auffi', 'gidarn', 'auf',
    'gehds', 'beim', 'schichtl', 'allerweil', 'habedehre', 'ded', 'sog', 'schorsch', 'watschnpladdla', 'iabaroi', 'aasgem', 'pfenningguat', 'biakriagal', 'kummd', 'barfuaßat', 'umma', 'baamwach', 'ramasuri', 'wuascht',
    'liberalitas', 'bavariae', 'buam', 'jedza', 'ohrwaschl', 'om', 'n', 'gipfe', 'kirwa', 'sei', 'gehd', 'ollaweil', 'oans', 'zwoa', 'gsuffa', 'd', 'trihöleridi', 'dijidiholleri', 'schoo', 'gscheckate', 'edlweiss', 'nomoi',
    'zidern', 'woibbadinga', 'obacht', 'measi', 'liabs', 'deandl', 'goaßmaß', 'in', 'greana', 'au', 'diandldrahn', 'bradwurschtsemmal', 'daad', 'g', 'hupft', 'midanand', 'schüds', 'nei', 'noch', 'giasinga', 'heiwog',
    'breihaus', 'schuabladdla', 'fünferl', 'griasnoggalsubbm', 'do', 'bittschön', 'imma', 'mogsd', 'bussal', 'aso', 'nimma', 'hob', 'an', 'suri', 'wea', 'nia', 'ausgähd', 'kummt', 'hoam', 'ganze', 'hoiwe', 'haberertanz',
    'wiad', 'mordsgaudi', 'oba', 'schbozal', 'eana', 'hea', 'schee', 'fensdaln', 'hoggd', 'griaß', 'god', 'beinand', 'fias', 'sodala', 'hemad', 'glacht', 'helfgod', 'resi', 'fescha', 'bua', 'gstanzl', 'hog', 'di', 'singd',
    'kini', 'naa', 'kumm', 'sepp', 'abfieseln', 'schellnsau', 'charivari', 'zünftig', 'broadwurschtbudn', 'dahoam', 'samma', 'gamsbart', 'need', 'hallelujah', 'luja', 'koa', 'wuid', 'amoi', 'biagadn', 'von', 'gfreit', 'am',
    'acht', 'tag', 'schuf', 'gott', 'bia', 'hinter', 'm', 'berg', 'san', 'leit', 'hogg', 'uns', 'zamm', 'obandeln', 'hetschapfah', 'kloan', 'musi', 'so', 'schmarn', 'reiwadatschi', 'kuaschwanz', 'back', 'mas', 'gwihss',
    'wolln', 'ognudelt', 'moan', 'oiwei', 'jo', 'mei', 'gams', 'wo', 'großherzig', 'soi', 'biazelt', 'ledahosn', 'wolpern', 'semmlkneedl', 'servas', 'der', 'oim', 'gibt', 's', 'sünd', 'oachkatzlschwoaf', 'singan', 'legst',
    'nieda', 'es', 'zua', 'hab', 'heimatland', 'pfundig', 'biawambn', 'jodler', 'gwiss', 'schaugn', 'nimmds', 'vui', 'spezi', 'graudwiggal', 'kaiwe', 'spotzerl', 'zwedschgndadschi', 'ja', 'red', 'bloß', 'gmahde', 'wiesn',
    'sowos', 'weida', 'gelbe', 'rüam', 'schaung', 'kost', 'lem', 'lossn', 'umananda', 'denn', 'wiavui', 'gor', 'gar', 'narrisch', 'gean', 'wurscht', 'huift', 'auszutzeln', 'mehra', 'dee', 'schwoanshaxn', 'vasteh', 'waar',
    'soweid', 'sauakraud', 'trachtnhuat', 'baddscher', 'middn', 'guglhupf', 'steckerleis', 'schnacksln', 'weiznglasl', 'du', 'dadst', 'daugn', 'sammawiedaguad', 'heid', 'watschnbaam', 'mog', 'blärrd', 'kneedl', 'engelgwand',
    'sonn', 'spuiratz', 'owe', 'leck', 'oamoi', 'brezn', 'vo', 'heitzdog', 'greaßt', 'nachad', 'ozapfa', 'gfoids', 'sagrisch', 'almrausch', 'sauwedda', 'glei', 'brodzeid', 'gschmeidig', 'bladl', 'bravs', 'lewakaas', 'wui',
    'boarischer', 'hawadere', 'midananda', 'im', 'beidl', 'dei', 'mamalad', 'prosit', 'gmiadlichkeit', 'stubn', 'wirds', 'fui', 'lustiga', 'brotzeit', 'biaschlegl', 'oans');

function CreateLoremIpsum(aWorte: Integer): String;
begin
  Result := CreateLoremIpsum(aWorte, Absatz, UsePre, Variante, Punktierung, Kommata);
end;

function CreateLoremIpsum(aWorte: Integer; aAbsatz: Integer): String;
begin
  Result := CreateLoremIpsum(aWorte, aAbsatz, UsePre, Variante, Punktierung, Kommata);
end;

function CreateLoremIpsum(aWorte: Integer; aAbsatz: Integer; aUsePre: Boolean): String;
begin
  Result := CreateLoremIpsum(aWorte, aAbsatz, aUsePre, Variante, Punktierung, Kommata);
end;

function CreateLoremIpsum(aWorte: Integer; aUsePre: Boolean): String;
begin
  Result := CreateLoremIpsum(aWorte, Absatz, aUsePre, Variante, Punktierung, Kommata);
end;

function CreateLoremIpsum(aWorte: Integer; aVariante: TLoremIpsumVariant; aPunktierung: Boolean): String;
begin
  Result := CreateLoremIpsum(aWorte, Absatz, UsePre, aVariante, aPunktierung, Kommata);
end;

function CreateLoremIpsum(aWorte: Integer; aVariante: TLoremIpsumVariant; aPunktierung: Boolean; aKommata: Boolean): String;
begin
  Result := CreateLoremIpsum(aWorte, Absatz, UsePre, aVariante, aPunktierung, aKommata);
end;

function CreateLoremIpsum(aWorte: Integer; aVariante: TLoremIpsumVariant): String;
begin
  Result := CreateLoremIpsum(aWorte, Absatz, UsePre, aVariante, Punktierung, Kommata);
end;

function CreateLoremIpsum(aWorte: Integer; aPunktierung: Boolean; aKommata: Boolean): String;
begin
  Result := CreateLoremIpsum(aWorte, Absatz, UsePre, Variante, aPunktierung, aKommata);
end;

function CreateLoremIpsum(aWorte: Integer; aAbsatz: Integer; aPunktierung: Boolean; aKommata: Boolean): String;
begin
  Result := CreateLoremIpsum(aWorte, aAbsatz, UsePre, Variante, aPunktierung, aKommata);
end;

function CreateLoremIpsum(aWorte: Integer; aAbsatz: Integer; aUsePre: Boolean; aVariante: TLoremIpsumVariant; aPunktierung: Boolean; aKommata: Boolean): String;
var
  Dummy_String: String;
  Dummy_Int: Integer;
  Dummy_Wort: String;
  Dummy_Absatz: Integer;

  Dummy_Komma: Boolean;
  Dummy_Punkt: Boolean;
begin
  Result := default (String);
  Dummy_String := default (String);
  Dummy_Absatz := default (Integer);
  Dummy_Punkt := default (Boolean);

  if aWorte < 1 then
  begin
    Exit;
  end; // if aWorte < 1 then

  Randomize;

  if aUsePre then
  begin
    case aVariante of
      Standard:
        begin
          Result := LoremIpsum_Pre;
        end; // Standard
      Bavaria:
        begin
          Result := LoremIpsum_Bavaria_Pre;
        end; // Bavaria
    end; // case aVariante of
  end; // if aUsePre then

  if aWorte = 1 then
  begin
    case aVariante of
      Standard:
        begin
          Dummy_String := LoremIpsum[Random(High(LoremIpsum))];
          if aAbsatz > 0 then
            if aUsePre then
              Dummy_String := sLineBreak + LoremIpsum[Random(High(LoremIpsum))];
        end; // Standard
      Bavaria:
        begin
          Dummy_String := LoremIpsum_Bavaria[Random(High(LoremIpsum_Bavaria))];
          if aAbsatz > 0 then
            if aUsePre then
              Dummy_String := sLineBreak + LoremIpsum_Bavaria[Random(High(LoremIpsum_Bavaria))];
        end; // Bavaria
    end; // case aVariante of
    if aPunktierung then
      Dummy_String := Dummy_String + '.';
  end; // if aWorte = 1 then

  if aWorte > 1 then
  begin
    if aAbsatz > 0 then
    begin
      Dummy_Absatz := aWorte div aAbsatz;
      if aAbsatz > aWorte then
      begin
        Dummy_Absatz := aWorte div 3;
      end; // if aAbsatz > aWorte then
    end; // if aAbsatz > 0 then

    for Dummy_Int := 1 to aWorte do
    begin
      case aVariante of
        Standard:
          begin
            Dummy_Wort := LoremIpsum[Random(High(LoremIpsum))];
          end; // Standard
        Bavaria:
          begin
            Dummy_Wort := LoremIpsum_Bavaria[Random(High(LoremIpsum_Bavaria))];
          end; // Bavaria
      end;

      if Dummy_Punkt or (Random(Dummy_Int) mod 4 = 2) then
      begin
        Dummy_Wort[1] := UpCase(Dummy_Wort[1]);
      end; // 1. Buchstabe GROß if Random(Dummy_Int) mod 4 = 2 then

      Dummy_Komma := default (Boolean);
      if aKommata then
      begin
        if Random(Dummy_Int) mod 7 = Random(2) then
        begin
          Dummy_Wort := Dummy_Wort + ',';
          Dummy_Komma := True;
        end; // if Random(Dummy_Int) mod 7 = Random(2) then
      end; // if aKommata then

      Dummy_Punkt := default (Boolean);
      if aPunktierung and (not Dummy_Komma) then
      begin
        if Random(Dummy_Int) mod 17 = Random(2) then
        begin
          Dummy_Wort := Dummy_Wort + '.';
          Dummy_Punkt := True;
        end; // if Random(Dummy_Int) mod 17 = Random(2) then
      end;

      Dummy_String := Dummy_String + Dummy_Wort + #32;

      if Dummy_Absatz > 0 then
      begin
        if Dummy_Int mod Dummy_Absatz = 0 then
        begin
          Dummy_String := Dummy_String + sLineBreak;
        end; // if Dummy_Int mod Dummy_Absatz = 0 then
      end; // if Dummy_Absatz > 0 then

    end; // for Dummy_Int := 1 to aWorte do
  end; // if aWorte > 1 then

  Result := Result + Dummy_String;
end;

end.
Aufruf:
Delphi-Quellcode:
  uses Unit_LoremIpsum;
{..}
  ShowMessage(CreateLoremIpsum(125));
  ShowMessage(CreateLoremIpsum(125, Bavaria));
  ShowMessage(CreateLoremIpsum(125, Bavaria, True, True));
  ShowMessage(CreateLoremIpsum(125, 4, True));
{..}

TODO:

1. Punktierung am Ende korrigieren
2. Bessere Absätze bilden
3. Andere Varianten

LG
Mathias
Ich vergesse einfach zu viel.
  Mit Zitat antworten Zitat