AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi XE 7 Error Meldung E2158 System-Unit veraltet oder beschädigt @Clr fehlt
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Erwin Pälzig · begonnen am 4. Mär 2015 · letzter Beitrag vom 10. Mär 2015
Antwort Antwort
Erwin Pälzig

Registriert seit: 4. Mär 2015
16 Beiträge
 
Delphi XE7 Professional
 
#1

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

  Alt 5. Mär 2015, 11:33
So hab nun den größten Teil der Codezeilen entfernt: Hier die lauffähige Unit16.

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)
  //procedure ClearValues(Sender: TObject; var TotalEvap: array of real); -> wird im eigentlichen Code verwendet
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form16: TForm16;
  TotalEvap: array of real;

implementation

{$R *.dfm}

{1. Programmabschnitt}
//procedure TForm16.ClearValues; -> wird im eigentlichen Code verwendet
begin

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

{2... weitere Programmabschnitte}

//initialization -> wird im eigentlichen Code verwendet

//finalization -> wird im eigentlichen Code verwendet

 end.
Die Prozedurdefinition, und der SetLength Aufruf passen nicht.

Danke für eure Hinweise!

Zu:
Hast Du TotalEvap evtl. noch einmal deklariert (z.B. als lokale Variable oder auch Feld oder Property), ggf. mit einem anderen Typen?
Gute Idee, ich prüfe dies auch.
  Mit Zitat antworten Zitat
Erwin Pälzig

Registriert seit: 4. Mär 2015
16 Beiträge
 
Delphi XE7 Professional
 
#2

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

  Alt 5. Mär 2015, 16:56
Hallo alle zusammen!

Also vielen dank Uwe für deine tatkräftige Unterstützung.

Irgendwie steh ich auf der Leitung. Ich habe mehrere Varianten versucht und es treten jeweils immer verschiedne Fehler auf.
Dies ist die letzte
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
  //TRealArray = array of Real; -> ist die Stelle hier korrekt (hier wird ein Datentyp deklariert, mit dem Typ Array (Feld) mit reelen Einträgen
  TForm16 = class(TForm)
  procedure TForm16.ClearValues(Sender: TObject);// -> fehlt hier etwas? [dcc32 Fehler] Unit16.pas(12): E2003 Undeklarierter Bezeichner: 'TForm16'
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form16: TForm16;
  TotalEvap:array of real; // Deklaration einer globalen Variable TotalEvap mit dem Datentyp (Feld) array mit reelen Einträgen

implementation

{$R *.dfm}

{1. Programmabschnitt}
procedure TForm16.ClearValues; //-> Definition der Procedur ClearFalues ([dcc32 Fehler] Unit16.pas(28): E2003 Undeklarierter Bezeichner: 'ClearValues')
//var -> wird genutzt wenn nur in diesem Unterabschnitt Variablen genutzt werden
  //TotalEvap: TRealArray;
 //TotalEvap:array of real;
begin
  //SetLength(TotalEvap,0);
  TotalEvap := nil; // ist faktisch identisch mit dem vorigen Befehl
end;

//var
 //TotalEvap: TRealArray;-> Der Parameter TotalEvap wird mit dem neuen selbsterzeugten Datentyp verknüpft.

 //begin
  //ClearValues(nil, TotalEvap); -> ClearValues wird aufgerufen und elemente werden auf Null gesetzt, und Totalevap Elemente werden eingfügt-> Verstehe diesn Audruck nicht zu 100%
 // end;
 end.
Zum aktuellen Quellcode ist eine weitere Fehlermeldung ist im Anhang zu sehen.

Ziel es ist mittels der Procedur Clearvalues die globalen Variablen zum Start des Programms auf Null zusetzten.
Besten Dank für eure Unterstüzung!
Ich bleibe auf jeden Fall dran.
Angehängte Grafiken
Dateityp: png Fehlermeldung_overload.png (14,2 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 5. Mär 2015, 17:14
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
  TRealArray = array of Real;

type
  TForm16 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure ClearValues(var theArray: TRealArray);
  end;

var
  Form16: TForm16;
  TotalEvap1: TRealArray; // Alle Arrays als TRealArray deklarieren!
  TotalEvap2: TRealArray;
  TotalEvap3: TRealArray;

implementation

{$R *.dfm}

{1. Programmabschnitt}
procedure TForm16.FormCreate(Sender: TObject);
begin
  ClearArray(TotalEvap1);
  ClearArray(TotalEvap2);
  ClearArray(TotalEvap3);

  { alternativ aber auch einfacher }
  TotalEvap1 := nil;
  TotalEvap2 := nil;
  TotalEvap3 := nil;
end;

procedure TForm16.ClearValues(var theArray: TRealArray);
begin
  theArray := nil;
end;

end.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 5. Mär 2015, 17:16
Ziel es ist mittels der Procedur Clearvalues die globalen Variablen zum Start des Programms auf Null zusetzten.
Das ist eigentlich gar nicht nötig, da dynamische Arrays als managed Objekte gelten und bei Programmstart bereits mit nil initialisiert sind.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Erwin Pälzig

Registriert seit: 4. Mär 2015
16 Beiträge
 
Delphi XE7 Professional
 
#5

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

  Alt 9. Mär 2015, 14:35
Hallo Uwe,

vielen Dank für deine Hinweise!

Ich habe deine Hinweise mit beachtet und nun ist diese Passage im Hauptprogramm compilierbar!
Vorallem ist ebenfalls der am Anfang gennante Fehler: Error Meldung E2158 System-Unit veraltet oder beschädigt @Clr verschwunden!

Nun gibt zwar jede Menge andere, aber ich denke die schaffe ich.

Besten Dank an dich und andere Forumsbeitragende!
Problem hat sich gelöst!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#6

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

  Alt 9. Mär 2015, 21:04
Hallo,
ist das jetzt ein neues Projekt oder ein geöffnetes altes Projekt?
Was passiert, wenn Du ein neues Projekt anlegst?

Heiko
Heiko
  Mit Zitat antworten Zitat
Erwin Pälzig

Registriert seit: 4. Mär 2015
16 Beiträge
 
Delphi XE7 Professional
 
#7

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

  Alt 10. Mär 2015, 10:34
Hallo Heiko,

das Projekt an dem ich arbeite ist ein geöffnetes altes Projekt evtl. Delphi 2007 oder so, weis es leider nicht so genau.

Hallo,
ist das jetzt ein neues Projekt oder ein geöffnetes altes Projekt?
Was passiert, wenn Du ein neues Projekt anlegst?

Heiko

Bei einem neuen Projekt habe ich so eine Lösung gefunden.
(Es lag an der Definition der globalen Variablen, Definition der Array Komponenten, Nutzung von SetLength(...) und Prozedur-Deklaration)

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
  TRealArray = array of Real; //-> ist die Stelle hier korrekt (hier wird ein Datentyp deklariert, mit dem Typ Array (Feld) mit reelen Einträgen
type
  TForm16 = class(TForm)
  procedure FormCreate(Sender: TObject);
  private
    //procedure ClearValues(Sender: TObject; var theArray: TRealArray);
    { Private-Deklarationen }
  public
    procedure ClearValues(var Sender: TObject; var theArray: TRealArray);
    { Public-Deklarationen }
  end;

var
  Form16: TForm16;
  TotalEvap1: TRealArray; // Deklaration einer globalen Variable TotalEvap1 mit dem Datentyp TRealArray
  TotalEvap2: TRealArray; // Deklaration einer globalen Variable TotalEvap2 mit dem Datentyp TRealArray
  TotalEvap3: TRealArray; // Deklaration einer globalen Variable TotalEvap3 mit dem Datentyp TRealArray
implementation

{$R *.dfm}

{1. Programmabschnitt}
procedure TForm16.FormCreate(Sender: TObject); //-> Definition der Procedur ClearFalues
begin
  TotalEvap1 := nil; // Elemente des TotalEvap1-Arrays werden auf Nullzeiger gesetzt
  TotalEvap2 := nil; // Elemente des TotalEvap2-Arrays werden auf Nullzeiger gesetzt
  TotalEvap3 := nil; // Elemente des TotalEvap3-Arrays werden auf Nullzeiger gesetzt
end;

procedure TForm16.ClearValues;
begin
 theArray:= nil; // Elemente des theArray werden auf Nullzeiger gesetzt
end;

 end.
  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:39 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-2025 by Thomas Breitkreuz