Delphi-PRAXiS

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.

himitsu 21. Jul 2012 10:51

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

Zitat von Daniel (Beitrag 1175469)
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.

Also entweder die Datei ist defekt, oder bei ihm wurde eine problematische Eigenschaft gespeichert, welche bei dir nicht in der DFM steht.
Eventuell (bestimmt) wurde ja irgendwas an der neueren Version verändert, was zwischen den Versionen nicht mehr kompatibel ist.

PS: Das gab es auch beim notmalen TreeView, wenn man dort im FormDesigner Einträge/Items erzeugt hatte, wo sich z.B. bei der Unicodeumstellung die binäre Entspechung der Strings veränderte.

Perlsau 21. Jul 2012 14:29

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

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

Wenn du mit "alt" sowas wie Delphi 2009 meinst, dann habe ich alte DFM-Dateien ... Das Projekt, an dem ich arbeite, ist neu: es wurde am 22.06.2012 von mir begonnen.

Vielmehr denke ich, daß das neue VirtualTreeView mit den alten Komponenten nicht arbeiten kann. Seltsamerweise habe ich hier noch ein Projekt, ungefähr einen Monat älter, das nach dem Update auf VST 5.0 keine Schwierigkeiten machte ...

Egal, jetzt muß ich weiterarbeiten ...

Perlsau 21. Jul 2012 14:33

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

Zitat von himitsu (Beitrag 1175478)
Also entweder die Datei ist defekt, oder bei ihm wurde eine problematische Eigenschaft gespeichert, welche bei dir nicht in der DFM steht. Eventuell (bestimmt) wurde ja irgendwas an der neueren Version verändert, was zwischen den Versionen nicht mehr kompatibel ist.

Das glaube ich auch: die neue Version ist wohl nicht ganz kompatibel mit der alten. Seltsamerweise funktionieren andere Projekte mit VST ohne Probleme.

Zitat:

Zitat von himitsu (Beitrag 1175478)
PS: Das gab es auch beim notmalen TreeView, wenn man dort im FormDesigner Einträge/Items erzeugt hatte, wo sich z.B. bei der Unicodeumstellung die binäre Entspechung der Strings veränderte.

Du meinst beim Delphi-Treeview? Das hab ich noch nie verwendet ...

plathine 9. Okt 2012 20:16

AW: Virtual Treeview 5.0 - Unsupported 16bit resource in file
 
Der Fehler wird durch die Eigenschaft Header.Style verursacht.
Delphi-Quellcode:
Header.Style = hsXPStyle

Der bisher unterstützte Eigenschaftswert hsXPStyle wurde entfernt, wodurch .dfm-Dateien mit diesem Wert ungültig werden. Am einfachsten ist es, alle entsprechenden Zeilen aus der .dfm-Datei zu löschen.

Perlsau 9. Okt 2012 20:18

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

Zitat von plathine (Beitrag 1186414)
Der bisher unterstützte Eigenschaftswert hsXPStyle wurde entfernt, wodurch .dfm-Dateien mit diesem Wert ungültig werden. Am einfachsten ist es, alle entsprechenden Zeilen aus der .dfm-Datei zu löschen.

Vielen Dank, darauf wäre ich von alleine wohl kaum gekommen :love:

Hab ich mir in meiner Codesammlung notiert ...

HPB 9. Okt 2012 21:15

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

Zitat von Perlsau (Beitrag 1186415)
Zitat:

Zitat von plathine (Beitrag 1186414)
Der bisher unterstützte Eigenschaftswert hsXPStyle wurde entfernt, wodurch .dfm-Dateien mit diesem Wert ungültig werden. Am einfachsten ist es, alle entsprechenden Zeilen aus der .dfm-Datei zu löschen.

Vielen Dank, darauf wäre ich von alleine wohl kaum gekommen :love:

Hab ich mir in meiner Codesammlung notiert ...

Ich hatte auch einige Seiteneffekte mit dem VirtualstringTree.
Aber XP- wird nun nicht mehr unterstützt. Ich habe alle VST in allen Anwendungen angepasst, und danach funktionierte alles wieder. Auch wurde ja in der Version 5.00
Celltext von WideString auf String zurückgefürt.
Dies müsste bei den VST doch auch noch zu Fehlermeldungen führen.
Ich habe alle WideString mit GSExpert in String überführt.
Aber sehr wahrscheinlich bin ein bisschen zu spät mit meinen Erfahrungen mit dem VST,
und Du hast es bestens gelöst.
Mit Gruß
HPB


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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