Autor Beitrag
Maisinator
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 167

Win XP HE SP3, Win Vista HP SP2
Delphi ;-)
BeitragVerfasst: Mi 28.10.09 16:11 
Hallo,

man kann ja mit dem Befehl Pos(...) die Position eines Symbol in einem String feststellen. Wenn ich nun aber z.b. 4 x "/" in einem String habe und ich die Position des dritten "/" haben möchte, gibt es da irgendwie eine bessere Methode als den String nach jedem "/" zu kopieren und erneut die Position zu bestimmen, bis man beim eigentlichen 3. "/" angekommen ist?

DANKE


Moderiert von user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Mi 28.10.2009 um 16:29

_________________
Das Unmögliche wagen, um das Mögliche möglich zu machen...
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Mi 28.10.09 16:21 
Ja, in der Unit StrUtils ist die Funktion posEx. Dieser kann man als 3. Parameter ein Offset übergeben.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
  s: String;
  PosVonRaute2: Integer;
begin
  s := 'TEST#TEST2#';
  PosVonRaute2 := posEx('#', s, pos('#', s) + 1);
Maisinator Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 167

Win XP HE SP3, Win Vista HP SP2
Delphi ;-)
BeitragVerfasst: Mi 28.10.09 16:24 
Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

Cool! Danke für deine schnelle Hilfe. Wenn ich das richtig verstanden habe, hast du mit deinem "Quelltext" die Position von der 2. # im String herausgesucht oder? Wenn ich die 3. # haben will, müsste ich dann doch
  PosVonRaute2 := posEx('#', s, pos('#', s) + 2); schreiben oder?

_________________
Das Unmögliche wagen, um das Mögliche möglich zu machen...
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Mi 28.10.09 16:26 
Davon abgesehen bei mir in Delphi6 existiert kein posex

EDIT: damit ihr nicht so verwirrt seit.


Zuletzt bearbeitet von thepaine91 am Mi 28.10.09 16:43, insgesamt 1-mal bearbeitet
Maisinator Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 167

Win XP HE SP3, Win Vista HP SP2
Delphi ;-)
BeitragVerfasst: Mi 28.10.09 16:29 
user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
Davon abgesehen bei mir in Delphi6 existiert kein posex


Also wenn das nun eine Anspielung auf die Lieblingsbeschäftigung vieler Männer und dem Hinterteil eines Menschen sein soll, bist du hier glaub ich falsch!

_________________
Das Unmögliche wagen, um das Mögliche möglich zu machen...
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Mi 28.10.09 16:35 
user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
Davon abgesehen bei mir in Delphi6 existiert kein posex


Sonst hast du nichts zu tun, oder? :roll:

user profile iconMaisinator hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconAndreas L. hat folgendes geschrieben Zum zitierten Posting springen:
Ja, in der Unit StrUtils ist die Funktion posEx. Dieser kann man als 3. Parameter ein Offset übergeben.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
  s: String;
  PosVonRaute2: Integer;
begin
  s := 'TEST#TEST2#';
  PosVonRaute2 := posEx('#', s, pos('#', s) + 1);

Cool! Danke für deine schnelle Hilfe. Wenn ich das richtig verstanden habe, hast du mit deinem "Quelltext" die Position von der 2. # im String herausgesucht oder? Wenn ich die 3. # haben will, müsste ich dann doch
  PosVonRaute2 := posEx('#', s, pos('#', s) + 2); schreiben oder?


Nein, als 3. Parameter gibst du an ab welchen Zeichen mit der Suche begonnen werden soll. Ich zähle eins hinzu weil sonst mit der Suche direkt bei der Raute begonnen werden würde was dann auch das Ergebnis wäre. Wenn du 3 Rauten hast, musst du erst die Position der ersten suchen, dann mit posEx die der zweiten und den Rückgabewert verwendest du dann wiederum als 3. Parameter für den nächsten posEx-Aufruf.
Maisinator Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 167

Win XP HE SP3, Win Vista HP SP2
Delphi ;-)
BeitragVerfasst: Mi 28.10.09 16:37 
Ah! Stimmt, hab das pos bei pos('#', s) übersehen... :oops:

_________________
Das Unmögliche wagen, um das Mögliche möglich zu machen...
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Mi 28.10.09 16:43 
Nein das war eine Anspielung darauf das es Posex in D6 nicht gibt. -.-
Das ihr euch von sowas gleich in die irre leiten lasst :O

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
// Für leute ohne die Funktion
function FindCharacter(str : string; sub: char; anzahl: integer): integer;
var tempanzahl, i: integer;
begin
  tempanzahl := 0;
  i := 0;
  while tempanzahl < anzahl do
  begin
    if str[i] = sub then
      inc(tempanzahl);
    inc(i);
  end;
  result := i;
end;  // funktioniert so natürlich nur mir Char

Sofern man die Funktion nicht hat wollte ich das nur anmerken falls später jemand mit z.B. d6 auf diesen Thread stößt.