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...

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, 20: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 20:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 19. Feb 2014, 00: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).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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, 11: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.269 Beiträge
 
Delphi 10.4 Sydney
 
#4

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

  Alt 19. Feb 2014, 14: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
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.288 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 19. Feb 2014, 15: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
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  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, 15: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 15:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.288 Beiträge
 
Delphi 11 Alexandria
 
#7

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

  Alt 19. Feb 2014, 16:07
Ich verwende die portable Version von Turbo Delphi.
Da wundert mich ja gar nix mehr. Aber egal, deine Sache.

Jedenfalls kannst du ja einmal schauen wo die DCUs zu den Units liegen. Die oben genannte System.dcu und Classes.dcu sollte ausschließlich im Delphiordner existieren und unverändert sein. Das unverändert ist eigentlich ohnehin sichergestellt, aber bei einer portablen Version sind ja die Schreibrechte leider da.

Mit dem Process Monitor kann man aber auch sehen von wo die gelesen werden.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
FragenderHerbert

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

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

  Alt 19. Feb 2014, 22:12
Danke Euch allen nochmals für Eure Antworten. War echt eine Herausforderung, die Ursache dieses Fehlers zu finden. Aber jetzt ist es vollbracht, ich bekomme auch dieses Projekt, das der Auslöser für diesen Thread war, nun übersetzt. Ich hatte ja versprochen, mich noch mal zu melden, wenn ich den Fehler gefunden habe.

Und was war's?:


Dem Projekt war eine .dof Datei beigelegt und da drin gab es eine Zeile:

UnitAliases=WinTypes=Windows;WinProcs=Windows;Variants=System

und an anderer Stelle weiter unten:

Item0=WinTypes=Windows;WinProcs=Windows;Variants=System
Item1=WinTypes=Windows;WinProcs=Windows;Variant=System

Die Zeile mit Item1 habe ich ganz entfernt, die Zeile mit Item0 lautet jetzt:

Item0=WinTypes=Windows;WinProcs=Windows

und die Zeile UnitAliases lautet jetzt:

UnitAliases=WinTypes=Windows;WinProcs=Windows

Und so kann ich nun mein Projekt übersetzen.

Die Ursache war der Alias Variants=System, worauf ich den Compilerfehler erhalten hatte.

@Jaenicke: Leider läuft der Processmonitor noch nicht auf Windows XP, wo ich mein Delphi installiert habe. Morgen teste ich den auf Windows 8. Runter geladen isser.

Also schaut bei so einem Unit-Versionsproblem auch in die .dof und anderen Konfigurationsdateien. Gemein, so ein Fehler.

.

Geändert von FragenderHerbert (19. Feb 2014 um 22:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.288 Beiträge
 
Delphi 11 Alexandria
 
#9

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

  Alt 19. Feb 2014, 22:22
@Jaenicke: Leider läuft der Processmonitor noch nicht auf Windows XP, wo ich mein Delphi installiert habe. Morgen teste ich den auf Windows 8. Runter geladen isser.
Den nutzen wir im Büro und bei Kunden sehr oft, sowohl unter XP wie auch unter Windows 7 oder 8. Hast du auch den richtigen?
http://technet.microsoft.com/de-de/s.../bb896645.aspx
Servicepack 3 ist ja ohnehin Pflicht für XP und das ist die einzige Voraussetzung.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:58 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