Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi XE 7 Error Meldung E2158 System-Unit veraltet oder beschädigt @Clr fehlt (https://www.delphipraxis.net/184171-xe-7-error-meldung-e2158-system-unit-veraltet-oder-beschaedigt-%40clr-fehlt.html)

Erwin Pälzig 4. Mär 2015 17:54

XE 7 Error Meldung E2158 System-Unit veraltet oder beschädigt @Clr fehlt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo alle zusammen,

ich habe ein kleines Problem mit der Compilierung eines alten Delphi Quellcodes.

In einem Abschnitt des Programms sollen deklarierte Variablen (array of real) über den nil-Pointer auf Null gesetzt werden.

Hier die Details:

SetLength(TotalEvap,0);
TotalEvap:= nil;

dabei ist TotalEvap : array of real;
TotalEvap ist vor dem Hauptteil im Variablen Abschnitt deklariert.
Hier auch die Fehlermeldung: [dcc32 Fataler Fehler] Unit4.pas(358): E2158 System-Unit veraltet oder beschädigt: '@Clr' fehlt
Sende im Anhang auch ein Screenshot.

In einer anderen Unit kommt keine Fehlermeldung. Was könnte ich falsch gemacht haben oder ist der Code falsch?
Fehlt eventuell ein Teil der Bibliothek? (wie in anderen Beiträgen)

Entschuldigt wenn ich einige Sachen zusammen werfe, beginne aber gerade wieder mit Delphi zu arbeiten...

Vielen Dank für eure Hilfe!

Uwe Raabe 4. Mär 2015 18:00

AW: XE 7 Error Meldung E2158 System-Unit veraltet oder beschädigt @Clr fehlt
 
Vielleicht solltest du dich erst um die darüber stehende Fehlermeldung kümmern, die auf dieselbe Zeile verweist.

Bist du sicher, daß die Deklaration wirklich so da steht?

Delphi-Quellcode:
var
  TotalEvap : array of real;
Ich hatte einen ähnlichen Fehler gerade in einem anderen Zusammenhang, aber da war einfach die Syntax falsch.

Erwin Pälzig 5. Mär 2015 10:42

AW: XE 7 Error Meldung E2158 System-Unit veraltet oder beschädigt @Clr fehlt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Uwe,

Danke für deine schnelle Antwort!

Ich hatte zunächst auch dies vermutet.

Habe aber diese und weitere Variablen eindeutig deklariert.
Bsp.
Delphi-Quellcode:
var
 TotalEvap : array of real;
Im Anhang der entsprechende Screenshot.

Kann evtl. der Fehler in der Anwendung des SetLength sein?
Ich hatte in verschiedenen Bsp. gelesen, dass es meistens mit einer Variable des Typs char aufgerufen wird.

Danke für jeden Hinweis! :)

Uwe Raabe 5. Mär 2015 10:49

AW: XE 7 Error Meldung E2158 System-Unit veraltet oder beschädigt @Clr fehlt
 
Dann liegt es definitiv an etwas Anderem, denn ein einfaches Beispielprojekt funktioniert tadellos.

Delphi-Quellcode:
program Project10;

{$APPTYPE CONSOLE}

var
  TotalEvap: array of real;

begin
  SetLength(TotalEvap,0);
  TotalEvap := nil; // ist faktisch identisch mit dem vorigen Befehl
end.
Kannst du das fehlerhafte Projekt soweit schrumpfen, daß es hier hochgeladen werden kann?

DeddyH 5. Mär 2015 10:50

AW: XE 7 Error Meldung E2158 System-Unit veraltet oder beschädigt @Clr fehlt
 
Hast Du TotalEvap evtl. noch einmal deklariert (z.B. als lokale Variable oder auch Feld oder Property), ggf. mit einem anderen Typen?

Horst0815 5. Mär 2015 10:54

AW: XE 7 Error Meldung E2158 System-Unit veraltet oder beschädigt @Clr fehlt
 
mal die Projektquellen bereinigen
sehe da keinen Fehler hab´s extra nochmal ausprobiert keine Fehler bei der Compilierung

mkinzler 5. Mär 2015 10:55

AW: XE 7 Error Meldung E2158 System-Unit veraltet oder beschädigt @Clr fehlt
 
Funktioniert den Uwe's Testprogramm?

Erwin Pälzig 5. Mär 2015 11:02

AW: XE 7 Error Meldung E2158 System-Unit veraltet oder beschädigt @Clr fehlt
 
Also vielen Dank für die soliden Vorschläge und gute Hinweise! Bereite eine gesonderte Unit vor...

Zitat:

Zitat von mkinzler (Beitrag 1292435)
Funktioniert den Uwe's Testprogramm?

jep, eine kleinere Unit mit den Hinweisen von Uwe läuft und lässt sich compilieren.
Delphi-Quellcode:
unit Unit16;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm16 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form16: TForm16;
  TotalEvap: array of real;

implementation

{$R *.dfm}

begin
  SetLength(TotalEvap,0);
  TotalEvap := nil; // ist faktisch identisch mit dem vorigen Befehl
end.

himitsu 5. Mär 2015 11:12

AW: XE 7 Error Meldung E2158 System-Unit veraltet oder beschädigt @Clr fehlt
 
Zitat:

Delphi-Quellcode:
SetLength(TotalEvap,0);

Strg+Linksklick auf "TotalEvap" oder die Maus drüber halten und etwas warten ... Was sagt dir die IDE denn dabei?

mkinzler 5. Mär 2015 11:12

AW: XE 7 Error Meldung E2158 System-Unit veraltet oder beschädigt @Clr fehlt
 
Ich glaube Detlef ist auf der richtigen Fährte


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 Uhr.
Seite 1 von 3  1 23      

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