Autor Beitrag
mumpiz
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 20.09.17 15:11 
Hallo,

die IDE gibt mir den Hinweis dass folgender Ausdruck immer false ist.

Kann mir jemand sagen warum?

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
hProcess = ProcessMemoryReaderApi.OpenProcess((uint)access, 1, (uint)ReadProcess.Id);
if (hProcess == null//<<< Expression is always 'false'
{
  throw new Exception("Opening process failed!");
}


Ich möchte das Programm daran hindern weiter zu machen wenn ein Fehler beim öffnen eines Prozesses aufgetreten ist.

Moderiert von user profile iconTh69: Titel geändert ("(IntPtr)" hinzugefügt)
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Mi 20.09.17 15:33 
Dann wird wohl hProcess stets ungleich Null sein.

Edit: Das Problem ist wohl, daß Du ein ungültiges OpenProcess abfangen möchtest...dann wird hProcess wohl Null sein.
Blup
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173
Erhaltene Danke: 43



BeitragVerfasst: Mi 20.09.17 15:44 
Vieleicht so?
ausblenden C#-Quelltext
1:
if (hProcess == 0)					


Moderiert von user profile iconTh69: C#-Tags hinzugefügt

Für diesen Beitrag haben gedankt: Delphi-Laie
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 20.09.17 15:45 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: Delphi-Laie
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Mi 20.09.17 15:48 
Liebe Experten, dazu eine fast philosophische Frage: Kann der Compiler nicht bemerken, daß die Typen zum einen des Handles und dazu der des für den Vergleich kredenzten Wertes nicht übereinstimmen, und daraufhin einen paßgenaueren Alarm schlagen?


Zuletzt bearbeitet von Delphi-Laie am Mi 20.09.17 21:30, insgesamt 1-mal bearbeitet
Blup
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173
Erhaltene Danke: 43



BeitragVerfasst: Mi 20.09.17 16:05 
Man kann nicht alles haben, automatische Typkonvertierung und Typprüfung.

Für diesen Beitrag haben gedankt: Delphi-Laie
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 20.09.17 16:17 
Eigentlich bekommt man bei einem solchen Vergleich von VS eine Warnung

Zitat:
The result of the expression is always 'false' since a value of type 'blahblah' is never equal to 'null' of type 'blahblah?'


Hilft natürlich nur wenn man nicht der Unart anheimfällt Warnungen zu ignorieren weil man in seinem Code schon so viele hat das man die Relevanten nicht findet.

Für diesen Beitrag haben gedankt: Delphi-Laie
mumpiz Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 20.09.17 16:41 
user profile iconBlup hat folgendes geschrieben Zum zitierten Posting springen:
Vieleicht so?
ausblenden C#-Quelltext
1:
if (hProcess == 0)					

Das habe ich zuerst probiert, dann kommt beim erstellen allerdings diese Fehlermeldung:
ausblenden Quelltext
1:
Operator '==' cannot be applied to operands of type 'System.IntPtr' and 'int' (CS0019) -					

Wenn IntPtr hProcess nicht initialisiert wird, welchen Wert hat dieser dann?

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
... die genaue Quellangabe zur Klasse ProcessMemoryReaderApi() wäre fein gewesen ...

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
static class ProcessMemoryReaderApi
{
   ....
   [DllImport("kernel32.dll")]
   public static extern IntPtr OpenProcess(UInt32 dwDesiredAccess, Int32 bInheritHandle, UInt32 dwProcessId);
   ....
}


Gruß

Moderiert von user profile iconTh69: Beitragsformatierung (Zitate) überarbeitet.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 20.09.17 16:44 
ausblenden C#-Quelltext
1:
if (hProcess == IntPtr.Zero)					

s. IntPtr.Zero

Für diesen Beitrag haben gedankt: mumpiz
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 20.09.17 16:54 
- Nachträglich durch die Entwickler-Ecke gelöscht -
mumpiz Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 20.09.17 16:55 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
if (hProcess == IntPtr.Zero)					

s. IntPtr.Zero


Ah super, genau.

Danke!