Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   FreePascal Code kürzen (https://www.delphipraxis.net/211853-code-kuerzen.html)

AlexII 10. Nov 2022 14:40

Delphi-Version: 7

Code kürzen
 
Hallo Leute,
ich habe folgenden Code hier geschrieben, und würde ihn gerne etwas verschlanken. Kann mir dabei jemand helfen? Ich frage mich z.B., ob man da nicht ohne TStringArray irgendwie auskommen könnte? Habe aber keine Idee wie? Habt ihr irgendwelche Überlegungen dazu?

Der Inhalt der txt-Datei sieht so aus:
Zitat:

1;2
3;4
5;6
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  ListAllAutos: TStringList;
  i, j: Integer;
  s: String;
  sr: TStringArray;
begin
    ListAllAutos := TStringList.Create;
  try
    ListAllAutos.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'ListAllAutos.txt');
    s := ListAllAutos[0];
    sr := s.Split(';');

    SetLength(Auto, ListAllAutos.Count, Length(sr));

    for i := 0 to ListAllAutos.Count - 1 do
    begin
      s := ListAllAutos[i];
      sr := s.Split(';');
      for j := 0 to Length(sr) - 1 do
        Auto[i, j] := sr[j];
    end;
  finally
    ListAllAutos.Free;
  end;
end;
Vielen Dank!

himitsu 10. Nov 2022 15:31

AW: Code kürzen
 
"kürzer"?
ist verboten. :cry:
https://quality.embarcadero.com/browse/RSP-39825



Nja, im Delphi :stupid:
Frag mich nicht was das "Böse" alles wie kann.


Delphi-Quellcode:
//var Autos: array of array of string;
//var Autos: array of TArray<string>;
var Autos: TArray<TArray<string>>;
Es könnte alles sehr kurz werden, wenn es so Einiges geben täte
Delphi-Quellcode:
for var Line in TFile.ReadAllLines(Application.ExePath + 'ListAllAutos.txt') do Autos[] := Line.Split(';');
:angle:

https://quality.embarcadero.com/brow...0%22exepath%22
und
Delphi-Quellcode:
xxx[] := yyy;
oder
Delphi-Quellcode:
xxx += yyy;
als Shortcut für
Delphi-Quellcode:
xxx := xxx + [yyy];
, so wie es fast jede andere Sprache kennt. :roll:


OK, inzwischen gibt es einige string-like Operatoren auch für Arrays.
Delphi-Quellcode:
var AllLines := TFile.ReadAllLines(ExtractFilePath(ParamStr(0)) + 'ListAllAutos.txt');
for var Line in AllLines do begin
  Autos := Autos + [AllLines[i].Split(';')];
Delphi-Quellcode:
var AllLines := TFile.ReadAllLines(ExtractFilePath(ParamStr(0)) + 'ListAllAutos.txt');
SetLength(Autos, Length(AllLines));
for var i := 0 to High(AllLines) do begin
  Autos[i] := AllLines[i].Split(';');

AlexII 10. Nov 2022 15:40

AW: Code kürzen
 
Mächtig :thumb:
Muss ich mal ändern. Riesen Dank! Schreibe später was daraus geworden ist.

AlexII 10. Nov 2022 15:46

AW: Code kürzen
 
Irgendwie scheint Lazarus "ReadAllLines" nicht zu kennen.

himitsu 10. Nov 2022 16:43

AW: Code kürzen
 
Bissl schade,
aber kannst'e dort doch auch schnell mal einbauen / einbauen lassen. :angle:

TFile.OpenRead (Stream), OpenText (StringStream), ReadAllBytes (TBytes), ReadAllLines (StringArray) und ReadAllText (ein String) sind schon nett.
https://docwiki.embarcadero.com/Libr...e.ReadAllLines

Der schöne Günther 10. Nov 2022 17:41

AW: Code kürzen
 
Ich hätte erst einmal angefangen, es lesbarer zu machen und den Variablen Namen statt Buchstaben zu geben.

Sinspin 11. Nov 2022 07:20

AW: Code kürzen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1514617)
Ich hätte erst einmal angefangen, es lesbarer zu machen und den Variablen Namen statt Buchstaben zu geben.

.... und es aus FormCreate verbannt, ich finde Programmlogik, ganz speziell Dateizugriffe, haben da nix zu suchen.

AlexII 11. Nov 2022 07:40

AW: Code kürzen
 
Zitat:

Zitat von Sinspin (Beitrag 1514637)
Zitat:

Zitat von Der schöne Günther (Beitrag 1514617)
Ich hätte erst einmal angefangen, es lesbarer zu machen und den Variablen Namen statt Buchstaben zu geben.

.... und es aus FormCreate verbannt, ich finde Programmlogik, ganz speziell Dateizugriffe, haben da nix zu suchen.


@Der schöne Günther Vielen Dank, ist schon erledigt!
@Sinspin Habe ich auch schon gedacht, aber wie macht man das üblicherweise, wo finden die Dateizugriffe statt?

freimatz 11. Nov 2022 09:12

AW: Code kürzen
 
Nach domain driven design im Bereich Infrastructure, nicht jedoch in UI :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 Uhr.

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