![]() |
AW: Zwischenablage Zugriff verweigert
EProgrammerNotFound und ENotImplemented normal nicht, da sie eine "Exception" sind und nicht vor EAbort erben, werden sie behandelt und auch angezeigt.
(nutze ich gern für Marker "nicht eingebaut, weil war bisher nicht nötig" und "nicht eingebaut, weil hatte noch niemnand Lust/Zeit") Per se ist in Pascal/Delphi die Exception-Behandlung so ausgelegt, dass "Exceptions" nicht von Exception erben müssen, auch wenn es blöd ist, da die Standard-ExceptionBenahndlung in SysUtils und Co. mindestens "Exception" verlangt, z.B. die beiden ShowExceptions und da bei ON normal überall eigentlich immer mindestens Exception-Typen angegeben werden. ABER, kommt die Exception z.B. aus eine DLL (ohne Laufzeitpackages), dann hat die DLL andere Exception-Classes, als wie die EXE. ... die beiden Seiten sind nicht nur nicht vom selben "Exception" geerbt ... nichtmal vom selben TObject. :stupid: |
AW: Zwischenablage Zugriff verweigert
Moin...8-)
...inzwischen hatte ich 2 Arbeitsstationen mit: Zitat:
Clipboard.AsText macht intern ein Open/Close...:roll: Was kann ich sonst machen? :gruebel: Statt dem raise ein Exit bringt mir keinen Fehler, aber auch kein Paste...:roll: |
AW: Zwischenablage Zugriff verweigert
Vielleicht lohnt es mal zu schauen wo die Unterschiede VCL zu FMX sind:
FMX:
Delphi-Quellcode:
VCL:
function TWindowsClipboardService.GetText: string;
var Data: THandle; TextData: string; begin Result := string.Empty; OpenClipboard(0); try Data := GetClipboardData(CF_UNICODETEXT); if Data <> 0 then begin TextData := PChar(GlobalLock(Data)); try Result := TextData; finally GlobalUnlock(Data); end; end; finally CloseClipboard; end; end;
Delphi-Quellcode:
Mir fällt da auf das FMX einfach immer mit Handle OpenClipboard(0), während VCL ein Handle übergibt OpenClipboard(FClipboardWindow);
procedure TClipboard.Open;
begin if FOpenRefCount = 0 then begin FClipboardWindow := Application.Handle; if FClipboardWindow = 0 then begin FClipboardWindow := AllocateHWnd(MainWndProc); FAllocated := True; end; if not OpenClipboard(FClipboardWindow) then raise EClipboardException.CreateResFmt({$IFNDEF CLR}@{$ENDIF}SCannotOpenClipboard, [SysErrorMessage(GetLastError)]); FEmptied := False; end; Inc(FOpenRefCount); end; function TClipboard.GetAsText: string; var Data: THandle; begin Open; Data := GetClipboardData(CTextFormat); try if Data <> 0 then {$IF DEFINED(CLR)} Result := Marshal.PtrToStringUni(GlobalLock(Data)) {$ELSE} Result := PChar(GlobalLock(Data)) {$ENDIF} else Result := ''; finally if Data <> 0 then GlobalUnlock(Data); Close; end; end; Könnte das einen Unterschied bei den Exceptions machen ? |
AW: Zwischenablage Zugriff verweigert
Danke...:P
...ich schau mir das an. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 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 by Thomas Breitkreuz