Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Mathias
Beiträge: 6910 Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz
Beitrag
von Mathias » Mo 1. Okt 2018, 18:10
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 grün
Mit Java und C/C++ sehe ich rot
sstvmaster
Beiträge: 582 Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 3.8
CPU-Target: 32+64bit
Wohnort: Dresden
Beitrag
von sstvmaster » Mo 1. Okt 2018, 19:08
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
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
Mathias
Beiträge: 6910 Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz
Beitrag
von Mathias » Mo 1. Okt 2018, 19:26
Dies war keine Frage, sondern nur als Info gedacht?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
sstvmaster
Beiträge: 582 Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 3.8
CPU-Target: 32+64bit
Wohnort: Dresden
Beitrag
von sstvmaster » Mo 1. Okt 2018, 19:37
, dann hab ich nichts gesagt.
LG Maik
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
Warf
Beiträge: 2118 Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64
Beitrag
von Warf » Mo 1. Okt 2018, 19:41
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: 6910 Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz
Beitrag
von Mathias » Fr 10. Apr 2020, 15:53
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 grün
Mit Java und C/C++ sehe ich rot
m.fuchs
Lazarusforum e. V.
Beiträge: 2808 Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:
Beitrag
von m.fuchs » Fr 10. Apr 2020, 16:24
bart_simpson_string_index.png (225.96 KiB) 2601 mal betrachtet
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
sstvmaster
Beiträge: 582 Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 3.8
CPU-Target: 32+64bit
Wohnort: Dresden
Beitrag
von sstvmaster » Fr 10. Apr 2020, 17:44
@ m.fuchs +1
LG Maik
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)