AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TStringList erzeugt Zeilenumbruch am Ende?

Ein Thema von NoGAD · begonnen am 19. Jan 2022 · letzter Beitrag vom 27. Jun 2022
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.587 Beiträge
 
Delphi 12 Athens
 
#9

AW: TStringList erzeugt Zeilenumbruch am Ende?

  Alt 23. Jun 2022, 19:45
Zum ursprünglichem Code aus #1:

Zitat:
function CreateLoremipsum(var Stringlist: TStringList; Anzahl: Integer; ...
Das VAR bei Objekten ist etwas ungünstig.
* erstmal willst du garnicht den Objektzeiger ändern
* und außerdem kann man so keine Property übergeben

Zusätzlich ist es besser hier den Vorfahren zu nutzen,
also TStrings, anstatt TStringList, denn du nutzt in deiner Funktion garnichts, wofür TStringList nötig ist, weil alles Verwendete bereits in TStrings deklaiert ist.

Delphi-Quellcode:
function CreateLoremipsum(var Stringlist: TStrings; Anzahl: Integer; ...


CreateLoremipsum(Memo1.Lines, 123456, ...);
Zitat:
Delphi-Quellcode:
  Result := True;
  try

  except
    Result := False;
  end;
Für soeine Fehlerbehandlung sollte man mindestens gesteinigt werden ein Paar auf den Popo bekommen.

Wenn dieser Code wirklich so schlecht ist, dass er einen Fehler auslösen kann, dann sollte man besser es knallen lassen, anstatt den Fehler zu verstecken. (weg mit dem Try-Except und weg mit dem unnützen Result ... entweder es ist True oder es knallt und ein halber Boolean ist nutzlos)


Randomize sollte man eigentlich niemals "ständig" aufrufen.
Die VCL ruft es beim Start bereits auf (in Konsolenanwendungen macht man es selber einmal zu Beginn).

Sei Froh, dass diese Funktion enorm beschleunigt wurde.
Früher war so ein Verhalten dafür Verantwortlich, dass "schnell" nacheinander mehrmals die selbe Zufallszahl(en) endstand(en).

Delphi-Quellcode:
Randomize;
a1 := Random;
b1 := Random;
c1 := Random;
Randomize;
a2 := Random;
b2 := Random;
c2 := Random;
Hier konnten (waren fast immer) die Werte *1 identlisch mit den *2,

wenn es schnell genug war, dass beide Random den selben Zeitstempel zur Initialisierung nutzten, so als würde man
Delphi-Quellcode:
RandSeed := 666; //Randomize;
a1 := Random;
b1 := Random;
c1 := Random;
RandSeed := 666; //Randomize;
a2 := Random;
b2 := Random;
c2 := Random;
machen.


Zitat:
Delphi-Quellcode:
if DoppeltAbsatz then
  Stringlist.Add(sLineBreak);
Klar, man könnte in eine Zeile einen Zeilenumbruch reinmachen,
aber etwas besser sollte es sein, wenn du dafür Leerzeilen einfügst.
(denn logisch entspticht ein .Line eine Zeile)
Delphi-Quellcode:
if DoppeltAbsatz then
begin
  Stringlist.Add('');
  Stringlist.Add('');
end;
Und anstatt am Ende die unnötigen Leerzeilen wieder zu entfernen,
wie wäre es, wenn man sie garnicht erst einfügt?

Delphi-Quellcode:
if DoppeltAbsatz and not (x = Anzahl) then
begin



Unnütze Units sind auch nicht das Wahre.
Graphics, Registry, ShellApi, TypInfo und Messages
hat nichts mit diesem Code zu tun (nichts davon wird verwendet)
Und wenn man auch noch Windows weg lässt, dann wäre dieser Code per se sogar für Linux/Mac/Android nutzbar.




[edit] ursprünglicher Post hier gelöscht, da er im falschen Thread war
https://www.delphipraxis.net/210865-...ml#post1507750
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (24. Jun 2022 um 08:56 Uhr) Grund: schlechtschreibung
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.
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