AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign längeren Codeblock als Text statt als Unter-Procedure
Thema durchsuchen
Ansicht
Themen-Optionen

längeren Codeblock als Text statt als Unter-Procedure

Ein Thema von enigma · begonnen am 8. Jul 2021 · letzter Beitrag vom 8. Jul 2021
Antwort Antwort
enigma

Registriert seit: 15. Jun 2008
47 Beiträge
 
#1

längeren Codeblock als Text statt als Unter-Procedure

  Alt 8. Jul 2021, 11:47
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!
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#2

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

  Alt 8. Jul 2021, 12:18
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. CodeTeil.inc auszulagern und mittels Include-Anweisung {$i CodeTeil.inc} einzufügen?

Du solltest auf jeden Fall die With -Anweisungen weglassen und stattdessen qualifizierte Bezeichner verwenden, um Verwechslungen zu vermeiden und das Debuggen zu ermöglichen.
Gruß, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 8. Jul 2021, 13:05
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)?
  Mit Zitat antworten Zitat
enigma

Registriert seit: 15. Jun 2008
47 Beiträge
 
#4

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

  Alt 8. Jul 2021, 15:08
Vielen Dank für eure Tipps!
Manchmal hat man halt Tomaten auf den Augen
  Mit Zitat antworten Zitat
enigma

Registriert seit: 15. Jun 2008
47 Beiträge
 
#5

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

  Alt 8. Jul 2021, 15:20
Hallo Andreas,

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

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#6

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

  Alt 8. Jul 2021, 15:24
Meinst du bei jedem Attribut den Qualifier, z.B. RecordX vorne dran zu stellen?
ja, genau so, Enigma.
z.B.RecordX.x := 1; etc.
Gruß, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 01:05 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