Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   längeren Codeblock als Text statt als Unter-Procedure (https://www.delphipraxis.net/208280-laengeren-codeblock-als-text-statt-als-unter-procedure.html)

enigma 8. Jul 2021 11:47

längeren Codeblock als Text statt als Unter-Procedure
 
Hallo,

eine kurze Frage:
In meinem Programm liegen 2 Arrays verschiedener Struktur mit einem identischen Record vor.

Folgendes klappt nicht:
Code:
procedure Test;
begin
  if begingung1 then
    with array1 do begin
  else if bedingung2 then begin   
    with array2 do begin

    with recordX do begin      
     x := 1; //x ist im recordX von array1 und array2 identisch
     //es folgt noch ein längerer Codeblock mit Variablen,
     //die im recordX beider Arrays identisch sind
end;
Ein Versuch, in procedure Test eine Extra-Procedure Test2
zu erstellen, klappt nicht, da für recordX entweder array1 oder
array2 erforderlich ist.
Code:
procedure Test;
begin
  procedure Test2;   
    with recordX do begin      
     x := 1; //x ist im recordX von array1 und array2 identisch
     //es folgt noch ein längerer Codeblock mit Variablen,
     //die im recordX beider Arrays identisch sind
  end;    
end;
Meine Idee ist, den gesamten Text der Unter-Procedure als Textblock zu erstellen.
Meine Frage: Wie kann ich so einen Textblock erstellen oder habt ihr eine andere Idee?

Ich freue mich über jeden Typ - vielen Dank!

Andreas13 8. Jul 2021 12:18

AW: längeren Codeblock als Text statt als Unter-Procedure
 
Hallo Enigma,
ich bin mir nicht sicher, ob ich Dich richtig verstanden habe, was Du mit „Text“ meinst.
Vielleicht meinst Du, einen gemeinsamen CodeTeil in einer Textdatei z.B.
Delphi-Quellcode:
CodeTeil.inc
auszulagern und mittels Include-Anweisung {$i CodeTeil.inc} einzufügen?

Du solltest auf jeden Fall die
Delphi-Quellcode:
With
-Anweisungen weglassen und stattdessen qualifizierte Bezeichner verwenden, um Verwechslungen zu vermeiden und das Debuggen zu ermöglichen.
Gruß, Andreas

bcvs 8. Jul 2021 13:05

AW: längeren Codeblock als Text statt als Unter-Procedure
 
Ich vermute mal, du willst so etwas machen:
Delphi-Quellcode:
procedure DoSomethingWithArray(recordX:TMyRecord);
begin
  recordX.x:=1;
  recordX.blabla:=irgendetwas;
  ...
end;

procedure Test;
begin
  if begingung1 then
    DoSomethingWithArray(array1.recordx)
  else if bedingung2 then begin  
    DoSomethingWithArray(array2.recordx);
end;
Und außerdem: "Klappt nicht" ist keine Fehlerbeschreibung. Was passiert wann (oder auch nicht)?

enigma 8. Jul 2021 15:08

AW: längeren Codeblock als Text statt als Unter-Procedure
 
Vielen Dank für eure Tipps!
Manchmal hat man halt Tomaten auf den Augen ;-)

enigma 8. Jul 2021 15:20

AW: längeren Codeblock als Text statt als Unter-Procedure
 
Hallo Andreas,

verstehe ich dich richtig?
Meinst du bei jedem Attribut den Qualifier, z.B. RecordX vorne dran zu stellen?

Andreas13 8. Jul 2021 15:24

AW: längeren Codeblock als Text statt als Unter-Procedure
 
Zitat:

Zitat von enigma (Beitrag 1492045)
Meinst du bei jedem Attribut den Qualifier, z.B. RecordX vorne dran zu stellen?

ja, genau so, Enigma.
z.B.
Delphi-Quellcode:
RecordX.x := 1;
etc.
Gruß, Andreas


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 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