Pos(...

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Mathias
Beiträge: 5039
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Pos(...

Beitrag von Mathias »

Beim FPC 3.1, wurde bei Pos ein dritter Parameter eingeführt, man kann das Offset angeben, wo er mit suchen anfangen soll.

Folgendes spuckt 5 aus.

Code: Alles auswählen

  Caption := pos('a', 'abababababababababab', 5).ToString;
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

sstvmaster
Beiträge: 345
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: OS: Windows 10 | Lazarus: 2.0.8 + Fixes + Trunk 32bit
CPU-Target: 32Bit
Wohnort: Dresden

Re: Pos(...

Beitrag von sstvmaster »

das ist schon richtig so Pos liefert ja Int zurück, also die Position des ersten vorkommens.

bei

Code: Alles auswählen

var
  s1: String;
  s2: String;
begin
  s1 := 'abababababababababababcabababababababababab';
  s2 := 'abababababababababab';
  Label1.Caption:=Pos('abc',s1,5).ToString;
  Label2.Caption:=Pos('a',s2,6).ToString;


ist s1 = 21, s2 = 7
Passt.

Der Offset legt halt nur den Start fest ab wo gesucht werden soll.
LG Maik

Mathias
Beiträge: 5039
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Pos(...

Beitrag von Mathias »

Dies war keine Frage, sondern nur als Info gedacht? :wink:
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

sstvmaster
Beiträge: 345
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: OS: Windows 10 | Lazarus: 2.0.8 + Fixes + Trunk 32bit
CPU-Target: 32Bit
Wohnort: Dresden

Re: Pos(...

Beitrag von sstvmaster »

:oops: , dann hab ich nichts gesagt.
LG Maik

Warf
Beiträge: 1480
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Pos(...

Beitrag von Warf »

Dafür gabs bislang ja die Funktion PosEx aus den StrUtils. Finde ich gut das es jetzt in Pos direkt mit drin ist

Mathias
Beiträge: 5039
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Pos(...

Beitrag von Mathias »

Da bin ich gerade über eine Stolperfalle gestolpert:

Code: Alles auswählen

  s :=  'abababababababababababcabababababababababab';
  ofs := 1;
  ...
  ofs := Pos('ab', s, ofs);
  ...

Ich hatte zuerst ofs := 0; , da wurde bei Pos immer 0 zurück gegeben, obwohl der Suchstring mehrmals vorhanden war.
Wichtig, man muss immer mit 1 beginnen.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2284
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.8, FPC 3.0.4)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Pos(...

Beitrag von m.fuchs »

bart_simpson_string_index.png
bart_simpson_string_index.png (225.96 KiB) 517 mal betrachtet

:mrgreen:
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

sstvmaster
Beiträge: 345
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: OS: Windows 10 | Lazarus: 2.0.8 + Fixes + Trunk 32bit
CPU-Target: 32Bit
Wohnort: Dresden

Re: Pos(...

Beitrag von sstvmaster »

@ m.fuchs +1
LG Maik

Antworten