AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Unit TypInfo wurde mit einer anderen Version... InvokableVariantType Compiliert...
Thema durchsuchen
Ansicht
Themen-Optionen

Unit TypInfo wurde mit einer anderen Version... InvokableVariantType Compiliert...

Ein Thema von FragenderHerbert · begonnen am 18. Feb 2014 · letzter Beitrag vom 19. Feb 2014
Antwort Antwort
FragenderHerbert

Registriert seit: 4. Dez 2013
47 Beiträge
 
#1

Unit TypInfo wurde mit einer anderen Version... InvokableVariantType Compiliert...

  Alt 18. Feb 2014, 19:13
Hallo,

ich teste gerade die Demos aus Delphi-Test-Apps-master.zip von einem DP User hier, ich vermute @sx2008.

Beim Projekt "ComponentControl..." erhalte ich die obige Fehlermeldung.

Warum?

Im Quellcode wird nirgends auf diesen Typ Bezug genommen, warum dann dieser Compilerfehler. Wurde das evt. mit einer höheren Delphi Version übersetzt. Ich könnte so einen Fehler noch verstehen, wenn die betroffene Unit, hier "TypeInfo" in der Uses Klausel aufgeführt wäre, aber das ich nicht der Fall und auch der monierte Datentyp kommt im Quelltext nicht vor.

Außerdem erhalte ich noch die Meldung:

[Pascal Fataler Fehler] unit1.pas(6): F2051 Unit Classes wurde mit einer unterschiedlichen Version von System.@VarClr compiliert.

Auch diesen Typ suche ich im Quellcode vergebens. Hier ist er noch mal, aus Delphi-Test-Apps-master original hiereher kopiert:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    RadioGroup1: TRadioGroup;
    GroupBox1: TGroupBox;
    TreeView1: TTreeView;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation


{$R *.DFM}


function GetComponentName(c: TComponent): string;
begin
   Result := c.Name;

   if Result = 'then
   begin
      Result := '0x' + Format('%.8x',[Integer(c)]);
   end;
end;

procedure BuildComponentTree(c:TComponent; tn:TTreeNodes);
   procedure AddComponent(n: TTreeNode; nodes:TTreeNodes;c: TComponent);
   var
      n1: TTreeNode;
      i: Integer;
   begin
      n1 := nodes.AddChildObject(n,GetComponentName(c)+': '+c.ClassName,Pointer(c));

      for i := 0 to c.ComponentCount-1 do
      begin
         AddComponent(n1, nodes,c.Components[i]);
      end;
   end;
begin
   AddComponent(nil, tn, c);
end;

procedure BuildControlTree(c: TControl; tn:TTreeNodes);
   procedure AddControl(n: TTreeNode; nodes:TTreeNodes;c: TControl);
   var
      n1: TTreeNode;
      i: Integer;
   begin
      n1 := nodes.AddChildObject(n,GetComponentName(c)+': '+c.ClassName,Pointer(c));

      if c is TWinControl then
      begin
         for i := 0 to TWinControl(c).ControlCount-1 do
         begin
            AddControl(n1, nodes,TWinControl(c).Controls[i]);
         end;
      end;
   end;

begin
   AddControl(nil, tn, c);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
   TreeView1.Items.Clear;
   BuildComponentTree(Application, TreeView1.Items);
   TreeView1.FullExpand;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   TreeView1.Items.Clear;
   BuildControlTree(self, TreeView1.Items);
   TreeView1.FullExpand;
end;

end.
Ich habe Turbo Delphi 2006

Gibt es einen Workaround, um das Beispiel studieren und zu diesem Zweck auch übersetzen zu können?

Geändert von FragenderHerbert (18. Feb 2014 um 19:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#2

AW: Unit TypInfo wurde mit einer anderen Version... InvokableVariantType Compiliert..

  Alt 18. Feb 2014, 23:01
A) Alle *.DCU löschen, wozu es auch eine *.PAS gibt.

und/oder

B) "Projekt erzeugen" (Shift+F9) statt "Projekt kompilieren" (F9 oder Strg+F9) benutzen



Hier wird versucht eine DCU zu verwenden, welche nicht für deine Delphi-Version vorgesehn ist.
DCUs haben ein Spezifisches Format, welche von der Compiler-Version abhängt, aber nicht immer funktioniert die "automatische" Erkennung,
ob etwas "neu kompiliert" werden muß (darum das Erzwingen -> B), bzw. es fehlt bei dir ein Suchpfad (vergessen einzustellen), womit das garnicht richtig erkannt werden kannt werden kann, da der Compiler keine PAS zur DCU findet (darum diese Löschen und zusehen, wie der Compiler nun meckert, daß die PAS nicht gefunden wird -> A).
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
FragenderHerbert

Registriert seit: 4. Dez 2013
47 Beiträge
 
#3

AW: Unit TypInfo wurde mit einer anderen Version... InvokableVariantType Compiliert..

  Alt 19. Feb 2014, 10:19
Danke erst mal für die Antwort. Leider besteht das Problem immer noch, obwohl ich die Units Typinfo, Variants und System, die sich gegenseitig voraussetzen, aus dem Lib Ordner gelöscht habe. Stattdessen habe ich die .pas Versionen in den Projektpfad kopiert. Dennoch bleibt die Fehlermeldung. Ärgerlicherweise passiert das gleiche, wenn ich mit einem neuen, völlig leeren Projekt anfange. Ich fürchte ich hab mir die Installation zerschossen.

Lässt sich das reparieren oder ist eine Neuinstallation fällig?

Folgendes habe ich bisher gemacht:

-Alles neu übersetzen
-Austausch der compilierten Units gegen deren Quellcode

Bei Verwendung der .pas Version erhalte ich diese Fehlermeldung:
[Pascal Fehler] TypInfo.pas(109): E2003 Undefinierter Bezeichner: 'TInvokeableVariantType'

Weitere "Undefinierter Bezeichner" Meldungen folgen, obwohl diese Bezeichener in der Variants-Unit definiert sind und ich sicherheitshalber die Units in meinem Quellcode nochmals aufgeführt habe, trotz das kein sichtbarer Bezug im Projektquelltext auf irgendeinen Bezeichner dieser Unit vorhanden ist.

Wenn mir niemand weiter helfen kann, dann bleibt wohl nur die Neuinstallation. Werde mich im Erfolgsfall auf jeden Fall nochmals melden und sagen wie der Fehler behoben werden konnte. Aber momentan brauche ich selber dazu Hilfe.

Was kann ich sonst noch tun?
  Mit Zitat antworten Zitat
hoika

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

AW: Unit TypInfo wurde mit einer anderen Version... InvokableVariantType Compiliert..

  Alt 19. Feb 2014, 13:03
Hallo,

mit alle DCU's löschen waren nur deine eigenen Dateien gemeint,
nicht die von Delphi !
Jetzt brauchst du ein gutes Backup.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.909 Beiträge
 
Delphi 12 Athens
 
#5

AW: Unit TypInfo wurde mit einer anderen Version... InvokableVariantType Compiliert..

  Alt 19. Feb 2014, 14:16
Wenn du kein aktuelles Backup hast, reicht auch eine Reparaturinstallation von Delphi.

Und es sollten gerade keine System-Units an anderer Stelle liegen als in der Delphiinstallation. Das Kopieren in dein Verzeichnis war also genau falsch.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
FragenderHerbert

Registriert seit: 4. Dez 2013
47 Beiträge
 
#6

AW: Unit TypInfo wurde mit einer anderen Version... InvokableVariantType Compiliert..

  Alt 19. Feb 2014, 14:46
Soooo, jetzt habe ich Delphi zunächst so weit wiederhergestellt, das meine Projekt wieder korrekt übersetzt werden, nur dieses Eine, das der Auslöser für diesen Thread war, hat sich immer noch bockig. Und ein leeres neues Projekt (Neue VCL Anwendung) ist auch bockig. Warum aber kann ich dann andere Projekte wieder übersetzen.

Andere Projekte dürften sich doch nach meinem Verständnis dann auch nicht übersetzen lassen. Warum also nur dieses Eine und eben ein leeres Projekt, was sich bockig hat?

@Heiko alis hoika:

Keine Sorge! Ich habe nur die Units System, Variants und Typinfo aus dem /lib Pfad gelöscht, mit Sicherheitskopie in einen anderen Ordner außerhalb des Suchpfades.

Habe auch die Package Suchpfade angepasst. Habe sowohl das /Bin, wie das /Projects/Bpl

Verzeichnis bewusst in meinen Suchpfad aufgenommen und den /Lib Pfad sowieso.

Warum nun aufgebaute Projekte auch aus Delphi/Demos und andere eigene Projekte wieder übersetzt werden, aber das leere Projekt nicht und auch immer noch nicht das Componenttree Projekt, ist mir immer rätselhafter. Aber ich bleibe dran, das will ich jetzt wissen.

Ich verwende die portable Version von Turbo Delphi. Will deshalb nicht völlig neu installieren. Hatte ein Backup davon, aber auf der Festplatte. Kann höchstens noch mal eins vom USB Stick einspielen.

.

Geändert von FragenderHerbert (19. Feb 2014 um 14:49 Uhr)
  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 06:43 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