Delphi-PRAXiS
Seite 1 von 3  1 23      

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 17:53

String gleich aber doch nicht gleich...
 
Seltsames problem

Ich such nach einem Pfad wird der nicht gefunden dann setze ich das ergebnis auf ('')
Prüfe ich jetzt dagegen ob dieser (> '') ist bekomme ich ein true geliefert obwohl er es nicht ist.

Delphi-Quellcode:
if goProgBar.ProgPath > '' then


True obwohl gleich.

Hab es auch schon mit SizeOf und Lenght versucht dann wird immer ne 1 für die länge zurückgegeben.
Sollte aber eigentlich 0 sein.

gruss

mirage228 9. Sep 2012 18:07

AW: String gleich aber doch nicht gleich...
 
Zeig mal die zugehörige Funktion, die das Ergebnis produziert ;)

Sonst:
1) Versuch mal die EmptyStr Konstante zum Testen
2) Wieso überprüfst Du nicht mit = ''? Das ">" bei Strings war bis jetzt nicht geläufig...

EWeiss 9. Sep 2012 18:21

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

Zeig mal die zugehörige Funktion, die das Ergebnis produziert
Das ist ne Unit welche die Process informationen ausliest
wäre jetzt wegen einem string das hier zu posten zu viel denke ich mal ;)

Nein grunsätzlich kein problem aber ich kann ja im ToolTip beim debuggen erkennen das der String quasi leer ist.
Ich sagte ja schon auch wenn ich auf anderer weise prüfe

Delphi-Quellcode:
if SizeOf(goProgBar.ProgPath) > 0 then
if Length(goProgBar.ProgPath) > 0 then
gibt mir immer ne 1 zurück.

Zitat:

Versuch mal die EmptyStr Konstante zum Testen
Das könnte ich noch versuchen.

gruss

mirage228 9. Sep 2012 18:22

AW: String gleich aber doch nicht gleich...
 
Hm, ansonsten würde ich noch mal in der Unit schauen, vllt zeigt es der Debugger dir nur nicht richtig an...

EWeiss 9. Sep 2012 18:36

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

Zitat von mirage228 (Beitrag 1182217)
Hm, ansonsten würde ich noch mal in der Unit schauen, vllt zeigt es der Debugger dir nur nicht richtig an...

Mit der Konstante funktioniert es..
Danke.

Aber schon seltsam das ganze.

gruss

EWeiss 9. Sep 2012 19:01

AW: String gleich aber doch nicht gleich...
 
Muss nochmal nachhaken.

Es gibt ja soviele möglichkeiten um die länge eines strings zu prüfen.
Also von den mir genannten wüßte ich mal gerne was denn nun
die richtige Methode ist.. SizeOf, Length, > "" oder andere alternativen.

gruss

mirage228 9. Sep 2012 19:24

AW: String gleich aber doch nicht gleich...
 
Also ich prüfe meist meist über
Delphi-Quellcode:
Str <> ''
und manchmal über
Delphi-Quellcode:
Length(Str)
Das mit SizeOf() dürfte aber nicht funktionieren, da Strings in Delphi ja im Endeffekt nur Pointer sind (zumindest UnicodeString, AnsiString und WideString)...

Furtbichler 9. Sep 2012 19:26

AW: String gleich aber doch nicht gleich...
 
Ich wusst nicht, das man mit SizeOf(StringVariable) die Länge eines Strings ermitteln kann. SizeOf liefert die Größe des durch die Variable vebrauchten Speicherplatzes. Bei einem String ist dies 32bit, die Größe eines Pointers.

Um einen String auf 'nicht leer' zu prüfen, würde ich das 1:1 übersetzen. Also
Delphi-Quellcode:
If MyString <> '' Then
. Du sagst ja nicht 'Wenn der String größer als nichts ist'.

Wenn Du einen String auf 'mehr als Nichts' prüfen willst, wäre
Delphi-Quellcode:
if Length(MyString)>0 Then
das korrekte Äquivalent

EWeiss 9. Sep 2012 19:27

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

Zitat von mirage228 (Beitrag 1182226)
Also ich prüfe meist meist über
Delphi-Quellcode:
Str <> ''
und manchmal über
Delphi-Quellcode:
Length(Str)
Das mit SizeOf() dürfte aber nicht funktionieren, da Strings in Delphi ja im Endeffekt nur Pointer sind (zumindest UnicodeString, AnsiString und WideString)...

SizeOf..
Bisher hab ich da kein problem.

Str <> ''
Weniger dürfte ja eigentlich nicht auftreten. Oder?

Da komme ich fast zu dem schluss das eigentlich die überprüfung mit Lenght bei reinen Strings
das richtige sein sollte.
In verbindung mit Pointer wiederum nicht ..

Hmmm....

gruss

EWeiss 9. Sep 2012 19:29

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

Zitat von Furtbichler (Beitrag 1182227)
Ich wusst nicht, das man mit SizeOf(StringVariable) die Länge eines Strings ermitteln kann. SizeOf liefert die Größe des durch die Variable vebrauchten Speicherplatzes. Bei einem String ist dies 32bit, die Größe eines Pointers.

Um einen String auf 'nicht leer' zu prüfen, würde ich das 1:1 übersetzen. Also
Delphi-Quellcode:
If MyString <> '' Then
. Du sagst ja nicht 'Wenn der String größer als nichts ist'.

Wenn Du einen String auf 'mehr als Nichts' prüfen willst, wäre
Delphi-Quellcode:
if Length(MyString)>0 Then
das korrekte Äquivalent

Ok wobei wie schon angedeutet nach meinem verständnis dürfte ein string
niemals den minus wert annehmen warum dann auf <>

Delphi-Quellcode:
if Length(MyString)>0 Then

War dann letztendlich mein Gedankengang doch nicht so verkehrt ;)


gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 Uhr.
Seite 1 von 3  1 23      

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