![]() |
performance c++ <> Delphi
Kurze Frage.
Wie hoch ist die Wahrscheinlichkeit das beim senden eines Event aus einer Delphi DLL C++ sich verschlucken kann und es zu einem Absturz der Anwendung kommt. Gibt es Statistiken? Mir möchte jemand erzählen das wenn er seine Scrollbar sehr schnell zum Ende bewegt wenn ein Movie spielt seine Anwendung dabei abstürzt. Und sein Fix wäre im Event eine Postmessage an seine Winproc zu senden und dort erst den Code auszuführen der eigentlich in das Event gehört. Er ist der Meinung man könnt das nur beheben wenn man meine DLL nach C++ portiert (mache ich nicht) gruss |
AW: performance c++ <> Delphi
Kurze Antwort: Nein.
Bischen wirr geschrieben der Beitrag (so wie meine meist.) Wie kann man ein Event an C++ schicken? C++ ist eine Programmiersprache :wink: Wenn es um Probleme gibt und Postmessage ist im Spiel ist Delphi sicher so viel langsamer, als dass das irgendweine Rolle spielen könnte. |
AW: performance c++ <> Delphi
Hallo,
Zitat:
Oder er soll sich eine c++-DLL bauen. Und außerdem: Wenn seine Anwendung abstürzt, was kannst du denn dafür ;) |
AW: performance c++ <> Delphi
Von der Performance ist C++ sicherlich besser als Delphi, aber das ist definitiv nicht die Ursache des Problems.
Verwendest du in deiner Dll oder er in seinem Programm mehrere Threads? |
AW: performance c++ <> Delphi
Zitat:
|
AW: performance c++ <> Delphi
Wenn man überhaupt nicht weis was diese DLL und die Anwendung macht, kann man mit der Beschreibung nicht viel anfangen.
Eine Möglichkeit wäre z.B., die DLL ruft innerhalb eine Threads das Event auf. Die Anwendung möchte im Event auf die VCL zugreifen. Dann könnte der Eventhandler per PostMessage die Nachricht an den Hauptthread weiter leiten, der das darf. |
AW: performance c++ <> Delphi
Zitat:
![]() Da kommt genau das gegenteilige Ergebnis raus. |
AW: performance c++ <> Delphi
Zitat:
Zitat:
Also nochmal! Meine DLL schickt ein Event an die Anwendung welche C++ verwendet. Die Funktion die das Event signalisiert.
Code:
Meine Reverenz.
BOOL KVIDEOPLAYERDEF(KVideo_Initialize)(HWND MediaWindow, BOOL UseOverlay, CBEventNotice event);
Code:
sein Reverenz.
typedef void(__stdcall *CBEventNotice)(TPlayerEvent);
Code:
er meint er braucht __stdcall nicht weil die Referenz selbst bei ihm nie aufgerufen wird.
typedef void( *CBEventNotice)(TPlayerEvent);
Die CallBack bei mir.. funktioniert ohne Probleme.
Code:
Die Callback bei ihm.
void __stdcall OnPlayerEvent(TPlayerEvent event)
{ if (event == PlayEnded) { KillTimer(MovieHandle, MOVIE_TIMER); // IMediaSeeking mach probleme wenn Position weniger dann auf Max setzen INT64 MaxPos = (aMediaProperty.PlaybackLength / 10000) / 1000; if (Position < MaxPos) SetScrollPos(MovieHandle, SBS_HORZ, (int)MaxPos, TRUE); else SetScrollPos(MovieHandle, SBS_HORZ, 0, TRUE); } }
Code:
Hier soll es jetzt krachen wenn er seinen Slider schnell zum Ende bewegt.
void __stdcall OnPlayerEvent(TPlayerEvent event)
{ if (event == PlayEnded) { if (CheckLoopMode()) { KVideo_Play(); } else { SetStatusText(L"Closed"); DisableRestoreState(); Media_Stopped(); } } } Er hat das jetzt so umgangen.
Code:
WinProc
void CALLBACK OnPlayerEvent(TPlayerEvent event) {
PostMessage(hMain, WM_COMMAND, MAKLNG(IDC_PLAYENDED, 0), NULL); }
Code:
er ist der Meinung das es an Delphi liegt.
case IDC_PLAYENDED:
if (CheckLoopMode()) { KVideo_Play(); } else { SetStatusText(L"Closed"); DisableRestoreState(); Media_Stopped(); } break; wäre zu langsam. Zudem gäbe es das Problem das meine DLL synchron und MF asynchron laufen das wäre das Problem warum meine DLL zu viel CPU verwenden würde beim abspielen der Videos. Zitat:
gruss |
AW: performance c++ <> Delphi
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
im Typedef sich auch keinesfalls negativ auswirken würde. Erfüllt halt vor allem die Funktion des selbstdokumentierenden Codes.
stdcall
|
AW: performance c++ <> Delphi
Zitat:
Zumindest habe ich das bei unserer letzten Diskussion so verstanden. Nun wie schon erwähnt bin kein besonders guter Kenner von C++ aber versuche mein bestes mit eurer Unterstützung.. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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