Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Virtual Treeview 5.0 - Unsupported 16bit resource in file (https://www.delphipraxis.net/169455-virtual-treeview-5-0-unsupported-16bit-resource-file.html)

Perlsau 20. Jul 2012 17:03


Virtual Treeview 5.0 - Unsupported 16bit resource in file
 
Schönen Tag allerseits,

vielleicht sollte man ja mitten in einem Projekt nicht diverse Komponenten updaten, aber ich hab's gemacht und meinen alten TreeView auf die im Titel genannte Version aktualisiert. Installation war kein Problem, aber beim Versuch, mein Projekt zu kompilieren, kommt dieser Fehler:

[DCC Fehler] E2161 Error: RLINK32: Unsupported 16bit resource in file "D:\...\UnitCode.dfm"

Ich hab keine Ahnung, was das bedeuten soll. Oder vielleicht doch eine dunkle Ahnung: Könnte es sein, daß ich die (alte) TreeView-Komponente aus meiner Form rausschmeißen und durch die neue ersetzen muß?

daywalker9 20. Jul 2012 17:19

AW: Virtual Treeview 5.0 - Unsupported 16bit resource in file
 
Die Form einmal öffnen in Delphi sollte abhelfen.

Perlsau 20. Jul 2012 17:29

AW: Virtual Treeview 5.0 - Unsupported 16bit resource in file
 
Zitat:

Zitat von daywalker9 (Beitrag 1175429)
Die Form einmal öffnen in Delphi sollte abhelfen.

Hatte ich doch gemacht: Beim Neustart der Ide mit meinem Projekt war die Form sichtbar. Jetzt kommt noch erschwerend hinzu, daß die Form gar nicht mehr angezeigt werden kann:

Fehler beim Erzeugen von Formular: ''='' erwartet in Zeile 9538.

Hier ist wohl die UnitCode.dfm gemeint, denn die UnitCode.pas hat nur etwas über 1100 Zeilen. In Zeile 9538 der UnitCode.dfm steht aber nur folgendes:
Delphi-Quellcode:
Header.Style = seVirtualTree## TargetCanvas#TCanvas##Node#PVirtualNode#
Wobei die #-Zeichen wohl chr(10) bzw. chr(13) sind (dargestellt im PSpad als leere Quadrate).

Muß ich jetzt mein komplettes Formular neu designen?

Bernhard Geyer 20. Jul 2012 17:32

AW: Virtual Treeview 5.0 - Unsupported 16bit resource in file
 
Zitat:

Zitat von Perlsau (Beitrag 1175433)
Muß ich jetzt mein komplettes Formular neu designen?

Hast du den kein Backup?

Perlsau 20. Jul 2012 17:35

AW: Virtual Treeview 5.0 - Unsupported 16bit resource in file
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1175434)
Zitat:

Zitat von Perlsau (Beitrag 1175433)
Muß ich jetzt mein komplettes Formular neu designen?

Hast du den kein Backup?

Selbstverständlich hab ich eins, sogar mehrere, aber die sind von gestern und vorgestern. Ich hätte wohl vor dem Upgrade auf TreeView 5.0 auch noch eines machen sollen. Jetzt hilft mir auch das Stirnklatzschen nichts mehr, die letzten 5 Stunden sind dann wohl für die Katz :evil:

Perlsau 20. Jul 2012 17:44

Problem gelöst
 
Ich habe jetzt einfach so lange aus der History frühere DFM-Dateien zurückkopiert, bis der zweite Fehler verschwunden war. Der erste Fehler tritt nun auch nicht mehr auf. Pffffff ... das ist ja noch mal gutgegangen :lol:

Perlsau 20. Jul 2012 18:11

AW: Problem gelöst
 
Zitat:

Zitat von Perlsau (Beitrag 1175437)
Pffffff ... das ist ja noch mal gutgegangen :lol:

Zu früh gefreut ... Jetzt kommt schon im Projekt-Quelltext ein Fehler:

Code:
Im Projekt ... ist eine Exception der Klasse EReadError mit der Meldung 'Ungültiger Eigenschaftswert' aufgetreten.
Ausgelöst wird er hier:

Delphi-Quellcode:
Application.CreateForm(TFormCode, FormCode);
Behoben hab ich diesen Fehler, indem ich – wie anfangs geahnt – die VST-Komponente neu aufs Form gepflanzt und alle benötigten Einstellungen wieder hergestellt habe.

Doch damit der Friede noch nicht wieder hergestellt. Nun hab ich einen Laufzeitfehler:

Im Projekt PCH_PROCODE.exe ist eine Exception der Klasse EAssertionFailed mit der Meldung 'NodeDataSize not initialized. (D:\Programme\Coding\RAD Studio\6.0\lib\Virtual Treeview\Source\VirtualTrees.pas, Zeile 29472)' aufgetreten.

Ausgelöst wird die Exception beim Versuch, das erste Mal GetData aufzurufen:

Delphi-Quellcode:
procedure TFormCode.Einlesen_Sprachen;
VAR
   Data      : PNodeData;
   Node      : PVirtualNode;
   Anzahl,
   Index     : Integer;
   Sprache   : String;
   Expandiert : Boolean;

begin
     DatMod.Dset_Sprache.First;

     VST.Clear;
     VST.BeginUpdate;

     WHILE NOT DatMod.Dset_Sprache.Eof DO
     BEGIN
          Index             := DatMod.Dset_Sprache.FieldByName('IDX_CODESPRACHE').AsInteger;
          Anzahl            := DatMod.Dset_Sprache.FieldByName('ANZAHL_CODE').AsInteger;
          Sprache           := DatMod.Dset_Sprache.FieldByName('SPRACHE').AsString;
          Expandiert        := DatMod.Dset_Sprache.FieldByName('EXPANDIERT').AsBoolean;

          Node              := VST.AddChild(VST.RootNode);
          Data              := VST.GetNodeData(Node);           // hier knallt's
          Data.Index        := Index;
          Data.Eltern       := 0;
          Data.Titel        := Sprache;
          Data.Anzahl       := Anzahl;

          VST.Expanded[Node] := Expandiert;

          DatMod.Dset_Sprache.Next;
     END;

     VST.EndUpdate;
end;
Dabei hab ich an meinen NodeDatasizes gar nichts verändert:

Delphi-Quellcode:
unit UnitCode;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, ... ;

TYPE
    PNodeData = ^TNodeData;
    TNodeData = RECORD
                 Titel  : String;
                 Eltern : Integer;
                 Index  : Integer;
                 Anzahl : Integer;
                END;

CONST
    SizeNodeData = SizeOf(TNodeData);
Ebenso wenig wie an denn beiden entsprechenden Proceduren

Delphi-Quellcode:
procedure TFormCode.VSTGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer);
begin
     NodeDataSize := SizeNodeData;
end;

procedure TFormCode.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
                               Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
VAR
   Data : PNodeData;

begin
     Data := Sender.GetNodeData(Node);

     CASE Column OF
     0 : CellText := Data.Titel;
     1 : IF Data.Anzahl > 0                   THEN
            CellText := IntToStr(Data.Anzahl) ELSE
            CellText := '';
     END;
end;

Perlsau 20. Jul 2012 18:18

Problem jetzt wirklich gelöst
 
Achja, ich glaub, ich mach gleich mal beim Thread übers Altwerden mit :?

Kein Wunder, daß diese Fehlermeldung kam, hatte ich doch komplett übersehen, die Ereignisse im "neuen" VST wieder einzutragen.

Nachdem ich das nachgeholt hab, funktioniert wieder alles :-D

hoika 21. Jul 2012 07:12

AW: Virtual Treeview 5.0 - Unsupported 16bit resource in file
 
Hallo,

die Meldung "unsupported 16-Bit-Ressource" kommt übrigens,
wenn man ein altes DFM (im Binärformat) vor sich hat.


Heiko

Daniel 21. Jul 2012 07:42

AW: Virtual Treeview 5.0 - Unsupported 16bit resource in file
 
Zitat:

Zitat von hoika (Beitrag 1175468)
[...] die Meldung "unsupported 16-Bit-Ressource" kommt übrigens, wenn man ein altes DFM (im Binärformat) vor sich hat.

Da muss es aber noch irgendeine Randbedingung geben. Ich habe es eben mit XE2 getestet und wenn ich eine binäre .DFM-Datei habe sowie die zugehörige .PAS-Datei habe, dann kann Delphi problemlos auf diesen Dateien arbeiten.

Den eingangs genannten Fehler erhalte ich meist dann, wenn die DFM-Datei nicht in Ordnung ist und - wie auch oben im Beispiel gezeigt - Werte und Eigenschaften zusammengepresst werden, die nie nimmer nicht zusammengehören und auch nicht zusammenpassen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:11 Uhr.
Seite 1 von 2  1 2      

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