![]() |
Delphi-Version: XE
USB Display - API Problem (Fehler bei Kompilierung)
Hi,
habe mir jetzt mal ein ABACOM USB-LCD-Display für 4x20 Zeichen ASCII zugelegt. Funktioniert mit dem Demoprogramm einwandfrei, nur klappt das mit nem eigenen Projekt nicht so wie ich will. Vorab: Die API gibts unter ![]() ![]() Das Sample Projekt für Delphi 5 funktioniert gut, ich kann es modifizieren und so das Display ansteuern. Nur das Problem ist, dass ich jetzt diese Unit in ein anderes Projekt einbauen will. Beim kompilieren kommt mir dann der Fehler: ABACOM_USB_LCD_TLB.pas(497): E2064 Der linken Seite kann nichts zugewiesen werden Die Zeile 497:
Delphi-Quellcode:
TControlData2(CControlData).FirstEventOfs := Cardinal(@@FOnActivate) - Cardinal(Self);
Ich hoffe, es kann mir jemand helfen. Danke im Voraus! |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Was ist FirstEventOfs? ( ein Property? )
Die Setup lad ich mir jetzt nicht runter ... wäre ja zu paraktisch, wenn es die PAS pur gäbe. |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Liste der Anhänge anzeigen (Anzahl: 1)
Ich dachte, 628 Zeilen Quellcode sind zu viel ...
Hmm, die CControlData ist ein Typ von TControlData2, definiert in OleCtrls ... Die ganze Funktion:
Delphi-Quellcode:
Im Anhang das Sample-Projekt für Delphi 5.
procedure TUSBLCDX.InitControlData;
const CEventDispIDs: array [0..9] of DWORD = ( $000000C9, $000000CA, $000000CB, $000000CC, $000000CD, $000000CE, $000000CF, $000000D0, $000000D1, $000000D2); CTFontIDs: array [0..0] of DWORD = ( $FFFFFE00); CControlData: TControlData2 = ( ClassID: '{32F7D76C-7571-4142-8C35-A78F5CCE120D}'; EventIID: '{CCA105D4-0627-49C3-8181-D097ED4B5A30}'; EventCount: 10; EventDispIDs: @CEventDispIDs; LicenseKey: nil (*HR:$00000000*); Flags: $0000001D; Version: 401; FontCount: 1; FontIDs: @CTFontIDs); begin ControlData := @CControlData; TControlData2(CControlData).FirstEventOfs := Cardinal(@@FOnActivate) - Cardinal(Self); end; Mein Vorgehen für das neue Projekt: VCL-Anwendung erstellt ABACOM_USB_LCD_TLB.pas hinzugefügt und in die includes die Includes des Sample Projects, welche bei mir nicht vorhanden waren, auch inkludiert Soll ich sonst noch was uploaden? |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Bei mir gibt es den Fehler: Klasse nicht registriert.
OCX fehlt - ActiveX ? |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Hat mich zwar auch gewundert, aber auch in der lauffähigen Version ist dieses @@ drin ...
Das Entfernen von einem @ ändert allerdings nichts an dem Fehler. :cry: |
AW: USB Display - API Problem (Fehler bei Kompilierung)
So OCX ist geladen und registriert.
Sowohl Original-EXE als auch selbstcompilierte EXE sind fehlerfrei. DELPHI 2009 |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Sorry, aber was muss ich tun, um diese OCX zu registrieren?
Von OCX noch nie was gehört und Google sagt auch nur was von ActiveX, und damit habe ich noch nie gearbeitet. |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Das macht das setup_usb_lcd.exe automatisch.
Vor dem 1. Test hatte ich das Setup noch nicht ausgeführt. |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Diese Setup-Datei habe ich ja installiert !?!
Also habe ich jetzt deinstalliert, nochmal installiert - gleicher Fehler ... Welche Dateien hast du bei deinem neuen Projekt alle drin? (Kannst du das vielleicht als zip hochladen, evtl. kann er das ja kompilieren ...) |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Musst Du die *.ocx evtl. noch in Delphi installieren (Komponente - Komponente importieren)?
|
AW: USB Display - API Problem (Fehler bei Kompilierung)
Nein, ABACOM_USB_LCD_TLB.pas ist dabei.
|
AW: USB Display - API Problem (Fehler bei Kompilierung)
Sry, hatte ich übersehen.
|
AW: USB Display - API Problem (Fehler bei Kompilierung)
Zitat:
Was verstehst Du unter "Includes"? Der Fehler liegt nicht im ABACOM_USB_LCD_TLB.pas, da wird er nur gemeldet... Zeige uns mal das neue Project von Dir. |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Das geht ja bei mir auch ... ;)
Nur das integrieren in eine neue, leere VCL-Formularanwendung klappt nicht. EDIT: Meinte mit den "Includes" die uses. Mein Projekt anbei. EDIT2: Anhang entfernt, war die falsche ZIP ... -.- |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Ein neues Project muss doch nur uses ABACOM_USB_LCD_TLB, die Private-Declarations haben und die Formcreate-Procedure - mehr ist da nicht.
Da kann man doch nicht soviel falsch machen! |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Zitat:
Mein Code in der main.pas:
Delphi-Quellcode:
Hast du ne Idee, was daran falsch ist?
unit main;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ABACOM_USB_LCD_TLB; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private LCD: TUSBLCDX; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin LCD := TUSBLCDX.Create(self); With LCD do begin parent := self; Left := 24; Top := 32; end; end; end. Bei den Includes gibts folgende weniger als bei der Original-DPR:
Delphi-Quellcode:
Diese hinzuzufügen bringt aber auch nichts ...
ComCtrls, StdCtrls
|
AW: USB Display - API Problem (Fehler bei Kompilierung)
uses ist nicht identisch:
Es fehlen: ABACOM_USB_LCD_TLB, ComCtrls, StdCtrls; ---------- Du arbeitest offensichtlich mit verschiedenen Projects! Dein Upload sieht anders aus!!! |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Zitat:
Der jetzige Quellcode ist das neue Projekt - soll ich das uppen? |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Der Fehler ist reproduzierbar:
Wenn ABACOM_USB_LCD_TLB NICHT im Main.pas unter uses steht, kommt der Fehler! . Im DPR-File ist er überflüssig. |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Ja, er ist ja in der main.pas, habe mich mal wieder falsch ausgedrückt -.- :duck:
Allerdings verzweifle ich langsam, denn ich habe alle uses drin ... Kannst du vielleicht mal testen, ob du ein neues DPR erstellen kannst und dann auch kompilieren kannst? Wenn ja, kannst du es ja mal uppen ... Danke im Voraus, und danke für das was du schon gemacht hast! |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Liste der Anhänge anzeigen (Anzahl: 1)
Nimm einfach nur das DCU-File - es muss nicht immer neu erzeugt werden.
Bei mir kommt der Fehler plötzlich auch... |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Achso, das ist nur eine automatisch generierte OCX.
Dachte schon, da wäre mehr Code dahinter.
Delphi-Quellcode:
(für Win64 ist dieses Cardinal aber natürlich nicht nutzbar ... also besser sowas wie NativeUInt verwenden, wenn verfügbar)
// statt dem
TControlData2(CControlData).FirstEventOfs := Cardinal(@@FOnActivate) - Cardinal(Self); // kann man notfalls auch Folgendes verwenden TControlData2(CControlData).FirstEventOfs := Cardinal(@TMethod(FOnActivate).Code) - Cardinal(Self); |
AW: USB Display - API Problem (Fehler bei Kompilierung)
@ himitsu
Beim ganz gewöhnlichen Windows XP funzt es nicht, nichtmal kompilieren: E 2064 ... @ hathor Danke, hat geklappt! Auch wenns nicht sehr, ähem, "professional" ist, thx! |
AW: USB Display - API Problem (Fehler bei Kompilierung)
Wenn es sich nicht kompilieren läßt, dann liegt es wohl weniger am verwendeten Windows, sondern mehr am Compiler.
|
AW: USB Display - API Problem (Fehler bei Kompilierung)
Das Verrückteste ist: manchmal geht es! Das sieht man am Datum der DCU.
|
AW: USB Display - API Problem (Fehler bei Kompilierung)
Hallo,
Schau dir bei beiden Projekten mal Die eingestellten Compiler-Optionen an. Irgendwas mit Zuweisung an typisierte Variablen Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11: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