AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein String gleich aber doch nicht gleich...
Thema durchsuchen
Ansicht
Themen-Optionen

String gleich aber doch nicht gleich...

Ein Thema von EWeiss · begonnen am 9. Sep 2012 · letzter Beitrag vom 9. Sep 2012
Antwort Antwort
Seite 1 von 2  1 2      
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: String gleich aber doch nicht gleich...

  Alt 9. Sep 2012, 18:36
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
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: String gleich aber doch nicht gleich...

  Alt 9. Sep 2012, 19:01
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

Geändert von EWeiss ( 9. Sep 2012 um 19:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

AW: String gleich aber doch nicht gleich...

  Alt 9. Sep 2012, 19:24
Also ich prüfe meist meist über
Str <> '' und manchmal über
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)...
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: String gleich aber doch nicht gleich...

  Alt 9. Sep 2012, 19:27
Also ich prüfe meist meist über
Str <> '' und manchmal über
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
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: String gleich aber doch nicht gleich...

  Alt 9. Sep 2012, 19:35
SizeOf.. Bisher hab ich da kein problem.
Glaube ich nicht. Das kann icht funktionieren.

Sizeof liefert bei Strings den Wert 4 und bei ShortStrings die Anzahl der maximalen Zeichen + 1 (Längenbyte). Aber in keinem Fall die tatsächliche Länge.

Zitat:
Weniger dürfte ja eigentlich nicht auftreten. Oder?
Es ist problematisch, das Nichts innerhalb einer Ordnung korrekt zu plazieren. Es könnte korrekt sein, anzunehmen, das der leere String kleiner (nicht weniger) als jeder andere nicht leere String ist, aber erklären kann man das nicht: Das wäre eine Vereinbarung eines Sonderfalls in der Routine 'Vergleich von Strings'. Genausogut könnte man definieren, das der leere String größer als alle anderen Strings sind.

Zitat:
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 ..
Du denkst zu kompliziert. Pointer oder nicht, egal. Strings/Zeichen sollte man eigentlich nur auf Gleichheit prüfen, denn bei Verwendung der Ordnung (also Prüfen auf >,< usw.) legst Du dich implizit auf eine Sprache fest, denn im jeweiligen Zeichensatz wird die Ordnung definiert.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

AW: String gleich aber doch nicht gleich...

  Alt 9. Sep 2012, 19:52
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 Length(Str) .

<> ist in Delphi einfach das Symbol für Ungleichheit, wie != in C-artigen Sprachen oder ≠ in der Mathematik. 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 '' daher für die sauberste Lösung.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: String gleich aber doch nicht gleich...

  Alt 9. Sep 2012, 19:57
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 Length(Str) .

<> ist in Delphi einfach das Symbol für Ungleichheit, wie != in C-artigen Sprachen oder ≠ in der Mathematik. 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 '' daher für die sauberste Lösung.
Eine prüfung auf nur '' mag der Compiler gar nicht
zumindest nicht in verbindung mit not if not goProgBar.ClassNamen = 'then
Wie man's macht ist es nicht richtig..

gruss
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#8

AW: String gleich aber doch nicht gleich...

  Alt 9. Sep 2012, 20:00
Musst Klammern setzen ansonsten denkt der Compiler Du versuchst "goProgBar.ClassNamen" zu negieren (bool'scher Operator):

if not (goProgBar.ClassNamen = '') oder gleich
if goProgBar.ClassNamen <> ''
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#9

AW: String gleich aber doch nicht gleich...

  Alt 9. Sep 2012, 19:26
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 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 if Length(MyString)>0 Then das korrekte Äquivalent
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: String gleich aber doch nicht gleich...

  Alt 9. Sep 2012, 19:29
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 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 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 <>

if Length(MyString)>0 Then
War dann letztendlich mein Gedankengang doch nicht so verkehrt


gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz