Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi [Error] Record, object or class type required (https://www.delphipraxis.net/155718-%5Berror%5D-record-object-class-type-required.html)

Trogge 4. Nov 2010 19:22

Delphi-Version: 7

[Error] Record, object or class type required
 
Hallo,

ich habe ein kleines Problem bei einem größeren Delphi-Projekt.
Ich füge mal die wichtigsten Abschnitte ein:

Die Methode (Zeilennummern eingefügt):
Delphi-Quellcode:
{425} function TUebersetzer.Uebersetze_Komm_KontEnd(Befehl: TBefehl): TBefehl;
{426} begin
{427}   with Befehl do
{428}   begin
{429}     DelphiBefehl := DelphiOperator;
{430}     DelphiBefehl := DelphiBefehl + DelphiOperanden[1].Raw;
{431}   end;
{432}   result := Befehl;
{433} end;
Die Typdefinition des 1. Records:
Delphi-Quellcode:
type
  TBefehl = record
    KarolBefehl,DelphiBefehl : String;      //Befehle komplett zusammengesetzt
    KarolOperator,DelphiOperator : String;  //Operator-Teile
    KarolOperanden : Array[1..3] of TValue; //Operanden-Teil Karol
    DelphiOperanden : Array[1..5] of String; //Operanden-Teil Delphi
    AnzahlOperanden : Integer;              //Anzahl an Operanden
    Typ : Integer;                          //Befehls-Typ
  end;
Typdefinition des 2. Records:
Delphi-Quellcode:
type
  TValue = record
       Raw : String; //Value unbearbeitet
    Number : String; //Value ohne Typ-Kennzeichen
    Source : Char;   //Typ-Kennzeichen
  end;
Ich bekomme folgenden Fehler

[Error] uUebersetzer.pas(430): Record, object or class type required

jfheins 4. Nov 2010 19:25

AW: [Error] Record, object or class type required
 
Hast du es mal ohne das with probiert?

Vergiss es, Lösung ist einen Beitrag weiter unten. String ist kein Klassentyp, daher kannst du den Punkt nicht anwenden.

Bummi 4. Nov 2010 19:29

AW: [Error] Record, object or class type required
 
DelphiOperanden : Array[1..5] of String;

verus

DelphiBefehl := DelphiBefehl + DelphiOperanden[1].Raw;

mkinzler 4. Nov 2010 19:30

AW: [Error] Record, object or class type required
 
with ... ist gefährlich, da man nie weiss, ob der Compiler auf "das Richtige" schlieest

Delphi-Quellcode:
function TUebersetzer.Uebersetze_Komm_KontEnd(Befehl: TBefehl): TBefehl;
var
    v: TValue;
begin
    Befehl.DelphiBefehl := Befehl.DelphiOperator;
    v := Befehl.DelphiOperanden[1]
    Befehl.DelphiBefehl := Befehl.DelphiBefehl + v.Raw;
    result := Befehl;
end;

Bummi 4. Nov 2010 19:55

AW: [Error] Record, object or class type required
 
Zitat:

@mkinzler
function TUebersetzer.Uebersetze_Komm_KontEnd(Befehl: TBefehl): TBefehl;
var
v: TValue;
begin
Befehl.DelphiBefehl := Befehl.DelphiOperator;
v := Befehl.DelphiOperanden[1]
Befehl.DelphiBefehl := Befehl.DelphiBefehl + v.Raw;
result := Befehl;
end;
habe ich jetzt einen Hänger ....

DelphiOperanden : Array[1..5] of String;

Trogge 5. Nov 2010 05:24

AW: [Error] Record, object or class type required
 
:oops:

Alles klar. DelphiOperaden und KarolOperanden verwechselt.

Danke für die Hilfe^^


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