Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String gleich aber doch nicht gleich... (https://www.delphipraxis.net/170286-string-gleich-aber-doch-nicht-gleich.html)

EWeiss 9. Sep 2012 19:57

AW: String gleich aber doch nicht gleich...
 
Zitat:

Zitat von NamenLozer (Beitrag 1182242)
Zitat:

Zitat von EWeiss (Beitrag 1182228)
Str <> ''
Weniger dürfte ja eigentlich nicht auftreten. Oder?

Weder „größer“ noch „weniger“ dürfte auftreten, da überhaupt nicht definiert ist, was bei einem String „größer“ oder „kleiner“ überhaupt sein soll. Wenn dann kann die Länge des Strings verglichen werden, das wäre dann aber
Delphi-Quellcode:
Length(Str)
.

Delphi-Quellcode:
<>
ist in Delphi einfach das Symbol für Ungleichheit, wie
Delphi-Quellcode:
!=
in C-artigen Sprachen oder ≠ in der Mathematik.
Delphi-Quellcode:
Str <> ''
ist hier nicht zu verstehen als „Str ist größer oder kleiner '' “, sondern als „Str ist ungleich '' “, oder man könnte auch sagen: „Str ist kein Leerstring“.

Ich halte den Vergleich auf
Delphi-Quellcode:
''
daher für die sauberste Lösung.

Eine prüfung auf nur
Delphi-Quellcode:
''
mag der Compiler gar nicht
zumindest nicht in verbindung mit
Delphi-Quellcode:
not
Delphi-Quellcode:
if not goProgBar.ClassNamen = '' then

Wie man's macht ist es nicht richtig.. ;)

gruss

EWeiss 9. Sep 2012 20:00

AW: String gleich aber doch nicht gleich...
 
Zitat:

Zitat von jbg (Beitrag 1182244)
Das SizeOf bei GetWindowText ist falsch. Die Funktion möchte die maximale Anzahl an Zeichen (Char) haben und nicht die Byte-Größe (Quelle MSDN: "The maximum number of characters to copy to the buffer").

Mit SizeOf(Buf) bekommst du ab Delphi 2009 (Unicode) die doppelte Anzahl zurück, da SizeOf(Char) = 2 ist und somit "257*2" zurückkommt. GetWindowText möchte aber nicht die Byte-Größe, sondern die "Anzahl der verfügbaren Zeichen". Und die ermittelt man über Length.

Danke.. ;)
Da hab ich wohl ein Thema angestoßen ich denke viel nicht Studierte Schreiber dürften damit probleme haben.


gruss

mirage228 9. Sep 2012 20:00

AW: String gleich aber doch nicht gleich...
 
Musst Klammern setzen ansonsten denkt der Compiler Du versuchst "goProgBar.ClassNamen" zu negieren (bool'scher Operator):

Delphi-Quellcode:
if not (goProgBar.ClassNamen = '')
oder gleich
Delphi-Quellcode:
if goProgBar.ClassNamen <> ''

EWeiss 9. Sep 2012 20:05

AW: String gleich aber doch nicht gleich...
 
Zitat:

Zitat von mirage228 (Beitrag 1182248)
Musst Klammern setzen ansonsten denkt der Compiler Du versuchst "goProgBar.ClassNamen" zu negieren (bool'scher Operator):

Delphi-Quellcode:
if not (goProgBar.ClassNamen = '')
oder gleich
Delphi-Quellcode:
if goProgBar.ClassNamen <> ''

Jup das war's und das zu später Stunde ;)

Auf jedenfall bekomme ich jetzt die richtige Meldung..
Denn mit MSTaskListWClass kann ich bei meiner Button steuerung nichts anfangen ;)
Könnte zwar noch ProcEntry.szExeFile; aktivieren wenn der FileName nil ist
aber wie schon gesagt was soll ich steuern über die Button mit der TaskLeiste.

Danke euch ;)
Denke das nutzt anderen auch etwas.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:38 Uhr.
Seite 3 von 3     123   

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