Entwickler-Ecke
Multimedia / Grafik - Auflösungen der WebCam auslesen
bbfan - Mi 20.10.10 11:20
Titel: Auflösungen der WebCam auslesen
Hallo Leute,
ich bin von D7 auf D2009 gewechselt. Jetzt funktioniert die alte TVideoCapture vcap.pas nicht mehr.
Leider konnte ich keine Alternative dafür finden.
Ziel: Einfaches auslesen der Bildauflösungen einer WebCam
vg
elundril - Mi 20.10.10 11:37
Warum funktioniert sie nicht mehr? Fehlermeldung irgendwelcher Art oder dreht sich die Unit einfach um und schläft weiter wenn du sie ansprichst?
lg elundil
bbfan - Mi 20.10.10 15:19
Also die vcap.pas greift auf die DirectDraw.pas zu.
Diese produziert eine Menge Fehler.
Fehler 1: "IdirectdrawSurface benötigt Finalization - nicht im Variant Record erlaubt"
Delphi-Quelltext
1:
| lpDDSZBufferDest : PDirectDrawSurface; |
PDirectDrawSurface ist ein IDirectDrawSurface.
Eigentlich sollte es hiermit umgangen werden, scheint aber nicht zu klappen unter D2009
Delphi-Quelltext
1: 2: 3: 4: 5:
| {$IFDEF COMPILER5_UP} PDirectDrawSurface = Pointer; {$ELSE} PDirectDrawSurface = IDirectDrawSurface; {$ENDIF} |
bbfan - Mi 20.10.10 15:59
Gut ich bin jetzt einen Schritt weiter und in der dxcommon.pas angelangt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function IsNTandDelphiRunning : boolean; var OSVersion : TOSVersionInfo; AppName : array[0..255] of char; begin OSVersion.dwOsVersionInfoSize := sizeof(OSVersion); GetVersionEx(OSVersion); AppName[0] := #0; lstrcat(AppName, PChar(ParamStr(0))); CharUpperBuff(AppName, SizeOf(AppName)); result := ( (OSVersion.dwPlatformID = VER_PLATFORM_WIN32_NT) and (Pos('DELPHI32.EXE', AppName) = Length(AppName) - Length('DELPHI32.EXE') + 1) ); end; |
In der Zeile die fett gedruckt ist kommt beim Starten der Anwendung zu einer kernel Schutzverletzung.
Kompilieren klappt jetzt wieder.
Moderiert von
Martok: [b]-Tag durch highlight ersetzt
bbfan - Mi 20.10.10 16:30
Ich habe das angegebene wie folgt umschifft:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| function IsNTandDelphiRunning : boolean; var OSVersion : TOSVersionInfo; AppName : array[0..255] of char; ProgName:String; begin OSVersion.dwOsVersionInfoSize := sizeof(OSVersion); GetVersionEx(OSVersion); AppName[0] := #0; lstrcat(AppName, PChar(ParamStr(0))); ProgName:=AnsiUpperCase(AppName); result := ( (OSVersion.dwPlatformID = VER_PLATFORM_WIN32_NT) and (Pos('DELPHI32.EXE', ProgName) = Length(ProgName) - Length('DELPHI32.EXE')) ); end; |
Wobei der pos Vergleich mit delph32.exe für mich keinen Sinn macht, denn ParamStr(0) enthält meinen EXE Namen. Dann müsste ich also
einen delphi32.exe kompilieren. Was soll diese komische 2. Bedingung, die NIE erfüllt sein wird.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!