AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit string funktion Pos

Ein Thema von 4PhenomX · begonnen am 27. Nov 2017 · letzter Beitrag vom 28. Nov 2017
Antwort Antwort
4PhenomX

Registriert seit: 31. Mai 2011
2 Beiträge
 
#1

Problem mit string funktion Pos

  Alt 27. Nov 2017, 17:29
Hallo DP,

Eigentlich ist es mir schon fast etwas peinlich so etwas zu fragen, aber ich habe ein problem mit der string funktion Pos.
Ich möchte die Position einer Zeichenkette in einer längeren Zeichenkette ermitteln.

Die Anweisung sieht so aus:

nPos := Pos('f',WebBrowser1.LocationURL); // <-- Funktioniert ohne Probleme

Wenn ich allerdings mehr als ein Zeichen ermitteln möchte, giebt mir mein compiler eine Fehlermeldung aus.

nPos := Pos('fail',WebBrowser1.LocationURL); // <-- Compiler Fehlermeldung

Fehlermeldung sieht so aus:
[dcc32 Fehler] Main_F.pas(157): E2251 Doppeldeutiger überladener Aufruf von 'Pos'

Ich benutze Delphi 10.1 Berlin.
Bin da etwas ratlos....

Viele Grüße
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Problem mit string funktion Pos

  Alt 27. Nov 2017, 17:36
Hallo,

1. Benutze eine lokale Variable statt der direkten Übergabe, dann sollte das klappen.

2. PS: ich würde AnsiPos nehmen.

Ursache:
Pos ist mehrfach überladen, dein 'fail' kann ein AnsiString sein, Unicode usw.
Heiko
  Mit Zitat antworten Zitat
4PhenomX

Registriert seit: 31. Mai 2011
2 Beiträge
 
#3

AW: Problem mit string funktion Pos

  Alt 27. Nov 2017, 18:05
Danke.
Mit AnsiPos klappt es.

PS: Mit einer lokalen variable vom typ string klappt es auch nicht.

Geändert von 4PhenomX (27. Nov 2017 um 18:09 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Problem mit string funktion Pos

  Alt 27. Nov 2017, 18:07
Hallo,
dann nimm am besten gleich AnsiUpperPos.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Problem mit string funktion Pos

  Alt 28. Nov 2017, 10:46
Per Namespace die gewünschte Funktion explizit aufrufen (wenn sich beide Versionen in unterschiedlichen Units befinden würden)
nPos := System.SysUtils.Pos('fail', WebBrowser1.LocationURL);

oder ein expliziter Cast, um genau die gewünschte Version anzusprechen.
nPos := Pos(string('fail'), WebBrowser1.LocationURL);

Wie ist LocationURL definiert?
Wenn das ein AnsiString ist, dann den Cast auch als AnsiString,
bzw. die AnsiString-Version der Funktion verwenden.

PS: Auch wenn das AnsiUpperPos heißt, so kann die Funktion auch Unicode sein.
Embarcadero war bei der Namenswahl ein bissl unglücklich vorgegangen, als sie Unicode einführten.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: Problem mit string funktion Pos

  Alt 28. Nov 2017, 11:10
PS: Auch wenn das AnsiUpperPos heißt, so kann die Funktion auch Unicode sein.
Embarcadero war bei der Namenswahl ein bissl unglücklich vorgegangen, als sie Unicode einführten.
Erstens heißt das AnsiPos und zweitens hieß das schon in Delphi 7 so.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: Problem mit string funktion Pos

  Alt 28. Nov 2017, 11:24
Da war aber auch alles noch ANSI.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#8

AW: Problem mit string funktion Pos

  Alt 28. Nov 2017, 11:32
Da war aber auch alles noch ANSI.
Richtig! Und bei der Umstellung hätte man das dann in UnicodePos umbenennen sollen?

Die Umstellung war schon ziemlich genial eingefädelt. Wenn man nicht vorher schon unsauber programmiert hatte, funktionierte das in den meisten Fällen ohne weiteres Eingreifen. Aber wir kommen hier so langsam Off-Topic
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 22:13 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