AGB  ·  Datenschutz  ·  Impressum  







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

Display umschalten

Offene Frage von "msickel"
Ein Thema von msickel · begonnen am 21. Jul 2009 · letzter Beitrag vom 15. Nov 2009
Antwort Antwort
msickel

Registriert seit: 14. Mai 2005
108 Beiträge
 
Delphi 2005 Professional
 
#1

Display umschalten

  Alt 21. Jul 2009, 08:39
Hallo,

ich habe folgenden Code hier gefunden,

Delphi-Quellcode:

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;
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.

Delphi-Quellcode:

lRes := ChangeDisplaySettingsEx( PChar('\\.\DISPLAY2'),
                             TDevMode(lDevMode),
                             0,
                             CDS_UPDATEREGISTRY,
                             0);
Gruss Martin
ich weiss, das ich nichts weiss!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#2

Re: Display umschalten

  Alt 21. Jul 2009, 08:50
spontan würde ich sagen:
TDevModeA_new ... fällt dir das (vermutliche) Ansi-A in die Augen?
(D2009 ist Unicode, also W)

Zitat:
eider kommt es unter delphi 2009 hier zu einer Fehlermeldung,
Welche denn? (daß man da bei Allen erst nachfragen muß )
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
msickel

Registriert seit: 14. Mai 2005
108 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Display umschalten

  Alt 21. Jul 2009, 09:28
Zitat von himitsu:
spontan würde ich sagen:
TDevModeA_new ... fällt dir das (vermutliche) Ansi-A in die Augen?
(D2009 ist Unicode, also W)

Zitat:
eider kommt es unter delphi 2009 hier zu einer Fehlermeldung,
Welche denn? (daß man da bei Allen erst nachfragen muß )
der Fehler war E2089 Ungültige Typenumwandlung

der Tipp mit A und W war gut, Anpassung vorgenommen und schon kompiliert es, Danke.
ich weiss, das ich nichts weiss!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#4

Re: Display umschalten

  Alt 21. Jul 2009, 09:51
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}
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
MaToBe

Registriert seit: 2. Aug 2008
162 Beiträge
 
#5

Re: Display umschalten

  Alt 14. Nov 2009, 16:23
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#6

Re: Display umschalten

  Alt 15. Nov 2009, 12:36
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz