AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MouseOver Sorgt für Programm Crash

Ein Thema von Delphi-Narr · begonnen am 24. Apr 2014 · letzter Beitrag vom 25. Apr 2014
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: MouseOver Sorgt für Programm Crash

  Alt 24. Apr 2014, 21:03
Willst du die Funktion oder den Rückgabewert übergeben?

Das sollte so funktionieren
Delphi-Quellcode:
TSomeProc = procedure( Value : WideString ); stdcall;

var
  LSomeProc : TSomeProc;
begin
  ...
  LSomeProc( DateTimeToString( now ) );
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#2

AW: MouseOver Sorgt für Programm Crash

  Alt 24. Apr 2014, 21:23
Ich möchte nur den Rückgabewert übergeben, nicht die Funktion als solches.
So wie in deinem Beispiel sieht das bei mir jetzt auch aus, nur dass es statt procedure bei mir eine function ist.
Dann muss der Fehler noch wo anders liegen. Auch eine interessante Beobachtung: Ich habe noch zusätzlich zum "Start" Button einen Button auf das Formular gepackt, welcher lediglich die Farbe des Forms auf rot ändern soll.
Wird er zuerst gedrückt (vor Start), klappt es, während der "MainController" aktiv ist, passiert da nichts, der Quelltext wird nicht erreicht (Haltepunkt).
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: MouseOver Sorgt für Programm Crash

  Alt 24. Apr 2014, 21:44
Wegen dem "Priveligierte Anweisung"-Fehler solltest du deinen Code unbedingt nochmal bzgl. der Aufrufkonventionen prüfen und auch auf nicht initialisierte lokale Variablen.

Wirft der Compiler Warnungen oder Hinweise bei einem kompletten Rebuild?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#4

AW: MouseOver Sorgt für Programm Crash

  Alt 25. Apr 2014, 14:11
Das werde ich tun. Welche Aufrufkonventionen meinst du dabei?
Ein paar Warnungen spuckt er auf jeden Fall aus, die beziehen sich aber hauptsächlich auf Funktionen in anderen Units, die nicht verwendet werden.
Wenn ich gleich zu Hause bin, werde ich das genau überprüfen und dann hier aktualisieren
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: MouseOver Sorgt für Programm Crash

  Alt 25. Apr 2014, 14:18
Das werde ich tun. Welche Aufrufkonventionen meinst du dabei?
Ein paar Warnungen spuckt er auf jeden Fall aus, die beziehen sich aber hauptsächlich auf Funktionen in anderen Units, die nicht verwendet werden.
Wenn ich gleich zu Hause bin, werde ich das genau überprüfen und dann hier aktualisieren
Diese Aufrufkonventionen meine ich

http://docwiki.embarcadero.com/RADSt...ufkonventionen

die müssen auf beiden Seiten (Anwendung, DLL) passen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#6

AW: MouseOver Sorgt für Programm Crash

  Alt 25. Apr 2014, 16:36
Ich verwende derzeit nur 2 eigene DLLs neben der LogitechG19 DLL.
Die Aufrufkonventionen sehen alle in Ordnung aus (Alle Aufrufe erfolgen aus der AppClass.pas und sind in der G19Const.pas festgelegt).

Beim vollständigen Rebuild kommen folgende Warnungen:
Arduino_led.dll:
Code:
[DCC Warnung] GR32_VectorMaps.pas(256): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] GR32_VectorMaps.pas(257): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] GR32_VectorMaps.pas(257): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] LBUtils.pas(484): W1000 Symbol 'FileAge' ist veraltet
[DCC Warnung] LBUtils.pas(486): W1000 Symbol 'FileAge' ist veraltet
[DCC Warnung] LEDThread.pas(13): H2219 Das private-Symbol 'tR' wurde deklariert, aber nie verwendet
[DCC Warnung] LEDThread.pas(13): H2219 Das private-Symbol 'tG' wurde deklariert, aber nie verwendet
[DCC Warnung] LEDThread.pas(13): H2219 Das private-Symbol 'tB' wurde deklariert, aber nie verwendet
[DCC Warnung] arduino_led.dpr(41): H2164 Variable 'HTTPServer' wurde deklariert, aber in 'arduino_led' nicht verwendet
wobei FileAge in einer Methode vorkommt, die nicht verwendet wird und HTTPServer nur auskommentiert, da für später geplant. Die Variablen tR,tG und tB hab ich entfernt.

audio.dll:
Code:
[DCC Warnung] GR32_VectorMaps.pas(256): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] GR32_VectorMaps.pas(257): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] GR32_VectorMaps.pas(257): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] AudioVolume.pas(580): H2077 Auf 'ByMyAction' zugewiesener Wert wird niemals benutzt
Hauptprogramm:
Code:
[DCC Warnung] GR32_VectorMaps.pas(256): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] GR32_VectorMaps.pas(257): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] GR32_VectorMaps.pas(257): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] MainController.pas(43): H2219 Das private-Symbol 'SetLED' wurde deklariert, aber nie verwendet
Wobei SetLED auch nur für die Zukunft schon eingeführt wurde, aber noch keine Funktion erfüllt.

Hier noch die Aufrufkonventionen, die von der G19Const.pas vorgegeben werden:
Delphi-Quellcode:
// DLL Functions
  TInitFunction = function(dllpath:WideString):Boolean; stdcall;
  TUpdateFunction = function(displayed:Boolean; ledcontroller:Boolean; interval:integer):Boolean; stdcall;
  TGetLEDFunction = function(currentcolor:TLEDColor):TLEDColor; stdcall;
  TGetScreenFunction = function:TPixelArray; stdcall;
  TGetWantLEDControllFunction = function():Boolean; stdcall;
  TBtnDownFunction = function(btn:integer):Boolean; stdcall;
  TBtnPressedFunction = function(btn:integer;ms:integer):Boolean; stdcall;
  TBtnUpFunction = function(btn:integer;ms:integer):Boolean; stdcall;
  TExitFunction = function():Boolean; stdcall;

 // Callbacks - global storage system
  TcbSetFloat=function(name:WideString;value:real):Boolean; stdcall;
  TcbGetFloat=function(name:WideString):real; stdcall;
  TcbSetInt=function(name:WideString;value:integer):Boolean; stdcall;
  TcbGetInt=function(name:WideString):integer; stdcall;
  TcbSetWideString=function(name:WideString;WideString:WideString):Boolean; stdcall;
  TcbGetWideString=function(name:WideString):WideString; stdcall;
  TcbSetByte=function(name:WideString;value:Byte):Boolean; stdcall;
  TcbGetByte=function(name:WideString):Byte; stdcall;

  // Callback Declaration
  TSetGlobalStorageFunction = procedure(setFloat: TcbSetFloat; getFloat:TcbGetFloat; setInt:TcbSetInt; getInt:TcbGetInt; setPChar:TcbSetWideString; getPChar:TcbGetWideString; setByte:TcbSetByte; getByte:TcbGetByte); stdcall;
und hier die, die von der Arduino_led.dll verwendet werden:

Delphi-Quellcode:
procedure setglobalstorage(setFloat: TcbSetFloat; getFloat:TcbGetFloat; setInt:TcbSetInt; getInt:TcbGetInt; setWideString:TcbSetWideString; getWideString:TcbGetWideString; setByte:TcbSetByte; getByte:TcbGetByte); stdcall;

function init(dllpath:WideString):Boolean; stdcall;
function exit():Boolean; stdcall;
function tick(displayed:Boolean; ledcontroller:Boolean; interval:integer):Boolean; stdcall;
function getled(currentcolor:TLEDColor):TLEDColor; stdcall; // Bisher nie aufgerufen!
function getscreen:TPixelArray; stdcall;
function getwantledcontroll:Boolean; stdcall;
function btndown(btn:integer):Boolean; stdcall;
function btnpressed(btn:integer;ms:integer):Boolean; stdcall;
function btnup(btn:integer;ms:integer):Boolean; stdcall;
  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 02:24 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