AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi CompareStr Erläuterung? Alternativen?
Thema durchsuchen
Ansicht
Themen-Optionen

CompareStr Erläuterung? Alternativen?

Ein Thema von Elexarie · begonnen am 23. Mai 2011 · letzter Beitrag vom 24. Mai 2011
Antwort Antwort
Elexarie

Registriert seit: 7. Apr 2011
32 Beiträge
 
#1

CompareStr Erläuterung? Alternativen?

  Alt 23. Mai 2011, 18:52
Hallo Community,

wir sollen als Hausaufgabe die Funktion 'CompareStr' verwenden. Ich habe innerhalb dieser Funktion keinerlei Sinn gesehen und meinen Lehrer darauf angesprochen. Mir selber erscheint dieser als recht unerfahren und auch er hatte gewaltige Probleme mir zu erläutern, was dahinter steckt. Auch einige Referenzen wollten mich nicht aufklären.

Es handelt sich um die Funktion:
Code:
CompareStr(s1, s2)
Wir sollen einen Text (Edit1.Text) auf den Charakter 'e' überprüfen.

Rein logisch würde es doch dann dementsprechend wiefolgt aussehen:
Code:
begin

        if (CompareStr((Edit1.Text), 'e') > 0) then
              Label4.Caption := 'Es ist mindestens ein "e" vorhanden'

        else if (CompareStr((Edit1.Text),'e') < 0) then
              Label4.Caption := 'Es ist kein "e" vorhanden'

        else // CompareStr (...) = 0
              Label4.Caption := 'Es ist genau ein "e" vorhanden'
end;
Laut der Defintion unser Funktion lautet es wiefolgt:
Zitat:
Integer: <0, falls 1.String lex größer als 2.String, =0 falls beide gleich, >0, falls 1.String kleiner als 2. String
Täusche ich mich? Hat mein Lehrer bzw. der Arbeitszettel unrecht? Ist meine Überprüfung falsch?
Habt ihr direkt einen Vorschlag, den ich anstelle von CompareStr verwenden kann?

Mit freundlichen Grüßen,

Elex.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: CompareStr Erläuterung? Alternativen?

  Alt 23. Mai 2011, 19:10
Dafür gibt es die Online-Hilfe und wenn die aus welchen Gründen auch immer nicht zur Verfügung steht, dann schaut man da Delphi-Referenz durchsuchenCompareStr

Allerdings wird CompareStr eher zur Sortierung gebraucht, als dazu festzustellen ob in einem String ein anderer String enthalten ist.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: CompareStr Erläuterung? Alternativen?

  Alt 23. Mai 2011, 19:29
Code:
if (CompareStr((Edit1.Text), 'e') > 0) then
     Label4.Caption := 'Es ist mindestens ein "e" vorhanden'
else if (CompareStr((Edit1.Text),'e') < 0) then
     Label4.Caption := 'Es ist kein "e" vorhanden'
else // CompareStr (...) = 0
     Label4.Caption := 'Es ist genau ein "e" vorhanden'
Hi,
das stimmt so nicht, CompareStr sortiert. D.h. der 1. Fall bedeutet, der Text fängt mit einem Buchstaben nach "e" an.
Der 2. Fall bedeutet er fängt mit einem Buchstaben vor "e" an.(Könnte sein, dass ich beide Fälle vertausche)
im 3. Fall ist der Text genau ein "e".
Also ist wie du es prüfen willst wohl am ehesten so:
Code:
if CompareStr (...) = 0
   Label4.Caption := 'Das Editfeld hat "e" als Text'
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: CompareStr Erläuterung? Alternativen?

  Alt 23. Mai 2011, 19:56
Mögliche Alternativen: ContainsText, Pos oder PosEx
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Namenloser

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

AW: CompareStr Erläuterung? Alternativen?

  Alt 23. Mai 2011, 20:04
Wenn euer Lehrer euch wirklich den Auftrag gegeben hat, mithilfe der Funktion CompareStr einen String zu durchsuchen, ist er eine Lusche (was mich nicht weiter wundern würde, scheint bei Informatiklehrern Standard zu sein).

CompareStr ist, wie bereits gesagt wurde, dafür da, um Strings zu sortieren:
CompareStr('Apfel', 'Birne') ergibt -1 ('Apfel' kommt alphabetisch vor 'Birne')
CompareStr('Birne', 'Apfel') ergibt 1 ('Birne' kommt nach 'Apfel')
CompareStr('Apfel', 'Apfel') ergibt 0 (ist klar, beide sind gleich)
Es wird hierbei immer nur der gesamte String verglichen.

Wenn du einen String nach einem anderen String durchsuchen willst, ist die Funktion Delphi-Referenz durchsuchenPos dein Freund. Sie gibt als Ergebnis die Position zurück, an der der zu suchende String gefunden wurde, bzw. 0 wenn kein Treffer gefunden wurde.
Pos('A', 'Apfel') ergibt 1
Pos('pf', 'Apfel') ergibt 2
Pos('el', 'Apfel') ergibt 4
Pos('Z', 'Apfel') ergibt 0
usw...

Geändert von Namenloser (23. Mai 2011 um 23:05 Uhr) Grund: typo
  Mit Zitat antworten Zitat
Elexarie

Registriert seit: 7. Apr 2011
32 Beiträge
 
#6

AW: CompareStr Erläuterung? Alternativen?

  Alt 23. Mai 2011, 22:21
Vielen Dank.

Dann unterrichten sie schon Delphi an einem technischen Gymnasium (ich persönlich bin kein Freund hiervon) und dann auch noch falsch. Tut mir Leid, aber armes Bildungssystem.

Danke an alle Hilfen.

Der Lehrer darf sich was von mir anhören. Ich hatte den Verdacht schon am letzten Info-Tag.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

AW: CompareStr Erläuterung? Alternativen?

  Alt 24. Mai 2011, 08:06
[erbsenzählen]CompareStr sortiert nicht, sondern gibt eine Zahl zurück, welche man für eine Sortierung auswerten kann.[/erbsenzählen]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:04 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