Autor Beitrag
Kralle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65

Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
BeitragVerfasst: Do 21.07.11 22:47 
Hallo,

pos('1','"1,2,3"') >0 ist true genauso wie pos('1','"11,2,3"'), denn 11 enthält ja auch eine 1.

Gibt es eine Pascal bzw Delphi-Funktion für die 1 <> 11 ist?

Gruß Heiko
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 21.07.11 23:02 
Nicht das sich wüsste.

Für diesen Beitrag haben gedankt: Kralle
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 21.07.11 23:23 
ausblenden Delphi-Quelltext
1:
Pos(',1,'','+SuchString+',');					

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.

Für diesen Beitrag haben gedankt: Kralle
Kralle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65

Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
BeitragVerfasst: Fr 22.07.11 06:56 
Moin,

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
Pos(',1,'','+SuchString+',');					


das funktioniert aber nicht für die erste und letzte Zahl, weil der Suchstring
Zitat:
"11,2,3"
ist und so die erste Abfrage so aussieht pos(',1,',',"11,2,3",') und ,1, nicht ,"1, ist.

Ich weiß ich habe in meinem Beispiel Zahlen benutzt, aber auch bei Texten gebe es das Problem.
Z.B. pos(',ab,',',"ab,und,zu",')

Gruß Heiko
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 22.07.11 07:44 
Spiel mal ein bißchen mit TStringlist und deren Eigenschaft CommaText rum, z.B. so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
sl := TStringList.Create;
try
  sl.CommaText := DeinStringMitKommasDrin;
  for i := 0 to sl.Count-1 do
    if sl[i] = SuchString then 
    begin
       showMessage('Suchstring gefunden');
       break;
    end
finally
  sl.free;
end;

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: Kralle
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Fr 22.07.11 08:33 
Wieso holst du dir nicht das Pos Ergebnis und überprüfst dann pos-1 und pos+1?

lg

Für diesen Beitrag haben gedankt: Kralle
Kralle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65

Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
BeitragVerfasst: Fr 22.07.11 09:31 
Hallo,
user profile iconHenryHux hat folgendes geschrieben Zum zitierten Posting springen:
Wieso holst du dir nicht das Pos Ergebnis und überprüfst dann pos-1 und pos+1?

lg


An so einer Lösung war ich jetzt grade am basteln (hätte eine Funktion werden sollen).

Gruß Heiko
Kralle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65

Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
BeitragVerfasst: Fr 22.07.11 09:35 
Hallo Gausi,

user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Spiel mal ein bißchen mit TStringlist und deren Eigenschaft CommaText rum, z.B. so:


Ehrlich gesagt, war mir "CommaText" kein Begriff.
Ich habe jetzt Deine Lösung etwas überarbeitet:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
function cpos(searchstring,text:string):integer;
  var
    i: integer; //Schleifen-Variable
    tmplist: TStringList; // temporäre Stringlist
  begin
    tmplist := TStringList.Create;
    try
      tmplist.CommaText := text;   // Kommagetrennten Text in Stringlist überführen
      i:=0;
      while i < tmplist.Count do
        begin
          if tmplist[i] = searchstring then  // Wenn das gesuchte enthalten ist
            Begin
              Result:=i+1;
              i:= tmplist.Count;   // Um die While-Schleife zu beenden
            End
          else           // Wenn das gesuchte nicht enthalten ist
            Result:=-1;
          inc(i);
        end;
    finally
      tmplist.free;
    end;
  end;


Danke, für den Schubs in die richtige Richtung.

Gruß Heiko

P.S. Unter Deinem Namen steht: "Erhaltene Danke:", wie "Bedankt" man sich? Sehe keinen Button dafür.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 22.07.11 09:49 
Oh, da ist wohl jemand absolut gegen Breaks, was? ;-)

Der Danke-Button ist der Button mit dem Daumen-Hoch-Smilie links unten an jedem Beitrag.

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: Kralle
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Fr 22.07.11 11:27 
Eigentlich ist das ja ein tolles Beispiel für die Anwendung regulärer Ausdrücke.
ausblenden Delphi-Quelltext
1:
,?11,?					


würde mir da spontan in den Sinn kommen.

_________________
Delphi: XE - OS: Windows 7 Professional x64

Für diesen Beitrag haben gedankt: Kralle