![]() |
längerer Codeblock für 2 Arrays mit identischem Record
Hallo,
ich habe ein Problem mit 2 Arrays verschiedener Struktur, die jedoch ein identisches Record beinhalten. Es gibt einen längeren Codeblock mit den Variablen des identischen Records. Die Schwierigkeit besteht darin, Array1 und Array2 mit dem "with" Kommando zu platzieren. 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 weiterer Versuch, in procedure Test eine Extra-Procedure Test2 zu erstellen, klappt so auch nicht, da für recordX entweder array1 oder array2 erforderlich ist.
Code:
Ich freue mich über jeden Typ - vielen Dank!
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; |
AW: längerer Codeblock für 2 Arrays mit identischem Record
Deine Verwendung von With ist falsch und ich sage nicht, wie es richtig geht, da du es nicht verwenden sollst. Dein Problem kannst du nämlich gar nicht damit lösen. Das weiß ich, obwohl ich es noch nicht richtig verstanden habe.
|
AW: längerer Codeblock für 2 Arrays mit identischem Record
Delphi-Quellcode:
// Auch nicht Optimal, aber zumindest sollte es funktionieren
procedure DoTest( const AArr : TXyzArray); begin if Length( AArr ) then begin //Machwas (Was genau Du möchtest verstehe ich auch noch nicht ) end; end; procedure Test; begin if begingung1 then DoTest( array1 ) else if bedingung2 then DoTest( array2 ); end; |
AW: längerer Codeblock für 2 Arrays mit identischem Record
Zitat:
Etwa so:
Delphi-Quellcode:
Aktuell hat er vermutlich pro Array eine Bearbeitungsprozedur, wobei der Part der Bearbeitung des Records in beiden der gleiche ist. Die beiden Prozeduren will er jetzt zu einer zusammenfassen. Das geht nicht. Was aber geht, wäre die Bearbeitung des Records in eine eigene Prozedur verlegen (oder bei neuerem Delphi eine Recordmethode dafür anzulegen) - und nicht etwa in ein Include auszulagern, wie in einem anderen Forenbeitrag gefragt.
type
TGartenFruechte = (gfApfel, gfBirne, gfPflaume); TExotischeFruechte = (efBanane, efKiwi, efMango, efPapaya); TMyRecord = record [...] viele Felder end; TGartenArray = array [TGartenFruechte] of TMyRecord; TExoticArray = array [TExotischeFruechte] of TMyRecord; |
AW: längerer Codeblock für 2 Arrays mit identischem Record
Zitat:
Delphi-Quellcode:
procedure TuWasMit(var AItem: TMyRecord);
begin //es folgt noch ein längerer Codeblock mit Variablen, //die im recordX beider Arrays identisch sind end; procedure Test(ABedingung: Boolean; var AGarten: TGartenArray; var AExotic: TExoticArray); begin x := 1; if ABedingung then TuWasMit(AGarten[x]) else TuWasMit(AExotic[x]); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 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 by Thomas Breitkreuz