AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

VCL zu Non-VCL

Ein Thema von EWeiss · begonnen am 22. Jul 2017 · letzter Beitrag vom 25. Jul 2017
Antwort Antwort
Seite 2 von 4     12 34   
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#11

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 10:58
https://msdn.microsoft.com/de-de/lib...(v=vs.85).aspx

Man darf laut MS keine selektierten GDI-Objekte löschen, was aber in vielen Beispielen und Sourcen im INet nicht beachtet wird!?
Unter Win31 endete es schenll ganz böse, wenn das nicht beachtet hat, heute is die WinApi etwas robuster, aber es macht auf Dauer auch Probleme.

=> als benötigt man doch entweder den "OldBrush", oder man selektiert vor dem löschen etwas internes per "GetStockObject"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 11:11
Und OldBrush hat einen Vorteil.

Wenn außenrum eine große Zeichenroutine ist und mitten drin dein Code, dann kann es sein, dass danach andere Dinge mit dem falschen Brush weitergezeichnet werden, wenn du es nicht zurücksetzt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#13

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 14:20
Zitat:
Man darf laut MS keine selektierten GDI-Objekte löschen, was aber in vielen Beispielen und Sourcen im INet nicht beachtet wird!?
Nein?
Und warum tut es MS nicht selbst.
Sehe nirgends etwas von OldPen, OldBrush usw..
https://msdn.microsoft.com/de-de/lib...(v=vs.85).aspx

Ein Widerspruch in sich oder?

Zitat:
dass danach andere Dinge mit dem falschen Brush weitergezeichnet werden
Nö es ist immer die Value maßgeblich die gerade beim aktuellen zeichnen selektiert ist.

gruss

Geändert von EWeiss (25. Jul 2017 um 14:23 Uhr)
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 14:41
Meiner Meinung nach hat Himitsu hier recht

Das Beispiel in MSDN ist total Schrott

Schau Dir mal das an:


https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Und wenn Du dabei bist auch noch:

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Die GDI ist zwar robuster geworden aber es schadet bestimmt nicht wenn man sich an die Regeln hält
Fritz Westermann
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#15

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 14:54
Zitat:
Das Beispiel in MSDN ist total Schrott
Nun da fragt man sich welches Beispiel denn nun Schrott ist.
Meine verlinkten oder deine verlinkten.

Es ist mir jetzt zu mühselig das nachzuvollziehen was, wo , wer denn nun recht hat.
Ich sehe nur das ein und das gleiche Unternehmen unterschiedliche Interpretationen wieder gibt.

Natürlich, man kann nun hingehen und das für sich passende heraussuchen um gegen zu argumentieren.
Aber das erspare ich mir einfach.

Zitat:
Die GDI ist zwar robuster geworden aber es schadet bestimmt nicht wenn man sich an die Regeln hält
Wer sagt dir nun welche die Regel ist?
Wenn wie in meinen Links ersichtlich die MSDN es selbst nicht mal tut.

gruss
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#16

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 15:08
In der Dokumentation zur Funktion steht, man sollte es nicht tun. Dann ist doch schnurz, was in in irgendwelchen Beispielen steht!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 15:13
In der Dokumentation zur Funktion steht, man sollte es nicht tun. Dann ist doch schnurz, was in in irgendwelchen Beispielen steht!
Die Praxis sagt was anderes.
Sorry deine Aussage ist nicht qualifiziert genug.

Zitat:
BOOL DeleteObject(
_In_ HGDIOBJ hObject
);
Return value
If the function succeeds, the return value is nonzero.
If the specified handle is not valid or is currently selected into a DC, the return value is zero.
In beiden fällen ist die Rückgabe von DeleteObject (TRUE)
Delphi-Quellcode:
    SelectObject(FWindowDC, OldBrush);
    if DeleteObject(Brush) then
      SelectObject(FOldWindowDC, FWindowBitmap);
Delphi-Quellcode:
    //SelectObject(FWindowDC, OldBrush);
    if DeleteObject(Brush) then
      SelectObject(FOldWindowDC, FWindowBitmap);
Jeder kann sich nun aussuchen was er denn nun gerne hätte.

Qualifikation!
Für mich zählt das Ergebnis und das ist in beiden fällen True (Das Object wurde freigegeben und ich hab kein Speicherleck).
Widerlege mir das dann können wir darüber weiter diskutieren.

gruss

Geändert von EWeiss (25. Jul 2017 um 15:28 Uhr)
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#18

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 15:32
https://stackoverflow.com/questions/...ject-on-bitmap
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#19

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 15:33
Vergiss es. (Spam)
Hat nichts mit einem Bitmap zu tun. (Hintergrundfarbe Window\Form)

gruss

Geändert von EWeiss (25. Jul 2017 um 15:36 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.377 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: VCL zu Non-VCL

  Alt 25. Jul 2017, 16:56
Was ist NON-VCL?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:45 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