![]() |
Display umschalten
Hallo,
ich habe folgenden Code hier gefunden,
Delphi-Quellcode:
leider kommt es unter delphi 2009 hier zu einer Fehlermeldung, da ich nicht weiss was ich anpassen muss das es unter delphi 2009 compiliert wollte ich fragen ob mir jemand unter die Arme greifen kann.procedure TForm1.Button1Click(Sender: TObject); Var lDevMode : TDevModeA_new; lRes : Cardinal; begin FillChar(lDevMode, SizeOf(lDevMode), 0); lDevMode.dmSize := SizeOf(lDevMode); lDevMode.dmBitsPerPel := 32; lDevMode.dmDisplayFrequency := 85; // alles hard kodiert für meinen 2. Monitor lDevMode.dmPelsWidth := 1280; lDevMode.dmPelsHeight := 1024; lDevMode.Dual.Monitor.dmPosition.x := 1280; // die Weite/Auflösung des primären Monitors bzw. Lage des Monitors in Relation zum primären Monitor mit 0,0 oben links lDevMode.Dual.Monitor.dmPosition.y := 0; lDevMode.dmFields := DM_BITSPERPEL Or DM_DISPLAYFREQUENCY Or DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_POSITION; lRes := ChangeDisplaySettingsEx( PChar('\\.\DISPLAY2'), TDevMode(lDevMode), 0, CDS_UPDATEREGISTRY, 0); If lres <> 0 Then ShowMessage('hat nicht geklappt'); end;
Delphi-Quellcode:
Gruss MartinlRes := ChangeDisplaySettingsEx( PChar('\\.\DISPLAY2'), TDevMode(lDevMode), 0, CDS_UPDATEREGISTRY, 0); |
Re: Display umschalten
spontan würde ich sagen:
TDevModeA_new ... fällt dir das (vermutliche) Ansi-A in die Augen? (D2009 ist Unicode, also W) Zitat:
|
Re: Display umschalten
Zitat:
der Tipp mit A und W war gut, Anpassung vorgenommen und schon kompiliert es, Danke. |
Re: Display umschalten
da du hier allerdings ChangeDisplaySettingsEx und PChar nutzt, sollte besser garkeine Kennung angegeben werden
TDeviceModeA + ChangeDisplaySettingsExA + PAnsiChar TDeviceModeW + ChangeDisplaySettingsExW + PWideChar oder eben TDeviceMode + ChangeDisplaySettingsEx + PChar Nativ sind zwar nur A und W vorhanden, aber die Version ohne Typen-Kennung, wird oftmals dennoch implementiert und dan auf den nativen Typen des Kompilers umgeleitet, also bis D2007 nach A und in D2009 nach W PS:
Delphi-Quellcode:
PDevMode = PDeviceMode; {compatibility with Delphi 1.0}
TDevMode = TDeviceMode; {compatibility with Delphi 1.0} |
Re: Display umschalten
Guten Tag,
genau diesen Fehler mit der Typenumwandlung habe ich auch, allerdings werde ich aus der hier genannten Lösung nicht schlau. Was muss ich genau tun? MFG |
Re: Display umschalten
Du mußt es einfach so regeln, daß die Nötigen Typen übereinstimmen.
Erstmal könnte man schauen, was Delphi denn nun für einen Typ verlangt und diesen dann bereitstellen. Ansonsten gibt es eine einfache Regel: immer nur Definitionen von der selben Art verwenden
Delphi-Quellcode:
// alles Ansi
TDevModeA_new ChangeDisplaySettingsExA PAnsiChar // alles Unicode TDevModeW_new ChangeDisplaySettingsExW PWideChar // so wie es der Compiler nativ bzw. per Standard unterstützt // bis Delphi 2007 Ansi und danach Unicode TDevMode_new ChangeDisplaySettingsEx PChar |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01: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 by Thomas Breitkreuz