![]() |
Problem mit PosEx
hey,
ich hab diesen code und möchte für S1_1 die stelle wo das erste '/' haben für S1_2 die Zweite Stell ect. aber es funktioniert nicht könntet ihr euch das mal angucken ? hier ist mein code
Delphi-Quellcode:
procedure Schnippeln (Stringlist : TStringlist ) ;
var S1_1, S1_2 : Integer ; S2_1 , S2_2 : Integer ; S3_1 , S3_2 : Integer ; S4_1 , S4_2 : Integer ; i : Integer ; zähler : Integer ; begin zähler := 0; For i := 1 To Length(Stringlist.Text) do begin Zähler := PosEx(Stringlist.Text,'/', Zähler); case Zähler of 1 : S1_1 := i; 2 : S1_2 := i; 3 : S2_1 := i; 4 : S2_2 := i; 5 : S3_1 := i; 6 : S3_2 := i; 7 : S4_1 := i; 8 : S4_2 := i; end; inc(Zähler) end; end ; danke schonmal [edit=Matze]"PosExt" im Titel durch "PosEx" ersetzt, damit man über die Suche auch was findet. MfG, Matze[/edit] |
Re: Problem mit PosExt
Müsste das nicht umgedreht werden?
Delphi-Quellcode:
Außerdem sucht Pos jetzt ob Stringlist.Text = '/' ist. Guck dir doch mal die Hilfe zu Pos(Ex) an. Zuerst SubStr dann Str und eventuell dann Offset.
var
p, idx : Integer; idx := 0; p := Pos('/', ...); while p > 0 do begin case Idx do // das was du da hast end; Inc(Idx); p := PosEx('/', ..., p + 1); end; Und dann bekommst du die Stelle im String. Und das muss keine Zahl zw. 1 und 8 sein! MfG xZise |
Re: Problem mit PosExt
ups okay
danke :-D gute nacht :-d |
Re: Problem mit PosExt
Noch ein Tipp: Lass die Umlaute aus den Variablennamen.
|
Re: Problem mit PosExt
ich seh gerade es ist doch nicht das was ich meine
also ich erklär ecuh mal was ich eigl. wollte. ich wollte, dass er die erste Stelle von '/' sucht und sie S1_1 zuweist; die zweite stelle S1_2 ect. damit ich später leicher mti copy das copieren kann was ich will weil zwischen S1_1 und S1_2 steht dann der erste teil des textes den ich brauch Zwischen S2_1 und S2_2 der zweite und so weiter könntet ihr mir helfen das zu bewerkstelligen ? :-D lg :-D |
Re: Problem mit PosEx
Nimm einfach ein Array zur Speicherung der Positionen. ;-)
Und zum Suchen brauchst du doch kein Pos / PosEx, du brauchst doch nur jeweils den aktuellen Buchstaben zu vergleichen, da du alle Buchstaben durchgehst... |
Re: Problem mit PosExt
Zitat:
Gehe einfach in deiner Schleife alle Zeichen durch (das tust du ja schon), und wenn jetzt das aktuelle Zeilen ein Slash ("/") ist, dann füge einen Eintrag ans dynamische Array an. Wenn dir nicht klar ist, was genau das ist guck dir doch mal ein Tutorial darüber an (z.B. das ![]() MfG xZise |
Re: Problem mit PosEx
doch ist mir klar
dein code hat nur irg. nicht funtkioniert ... ja denke ich werde das ohne pos machen danke :-D |
Re: Problem mit PosEx
ihr müsst mir noch einmal helfen
ich hab das jetzt so gemacht
Delphi-Quellcode:
also meine idee war, dass ich heraus finde wo die '/' in meinem Text sind und ich dann geziehlt genau das zwischen ihnen heraus kopieren kann was ich brauche
procedure Schnippeln (Stringlist : TStringlist ) ;
var ZeilenZahlen : Array[1..8] of integer ; i : Integer ; Prüfstring : String ; zaehler : Integer ; begin zaehler := 1; For i := 1 To Length(Stringlist.Text) do begin Prüfstring := Stringlist.Text[i]; if Prüfstring = '/' then begin ZeilenZahlen[Zaehler] := i; inc(Zaehler); end; end; Startwoche := Copy(Stringlist.Text,(ZeilenZahlen[1]+1),(ZeilenZahlen[2]-1)); ShowMessage(Startwoche); Intervall := Copy(Stringlist.Text,(ZeilenZahlen[3]+1),(ZeilenZahlen[4]-1)); ShowMessage(Intervall); Tag := Copy(Stringlist.Text,(ZeilenZahlen[5]+1),(ZeilenZahlen[6]-1)); ShowMessage(Tag); Text := Copy(Stringlist.Text,(ZeilenZahlen[7]+1),(ZeilenZahlen[8]-1)); ShowMessage(Text); end ; ich vermute dass das Problem ist das er bei copy die 'enter' zeichen anders zählt als bei meinem "'/'-Find-code" wisst ihr wie ich das lösen kann ? |
Re: Problem mit PosEx
Schau dir mal am besten die Copy() Methode (z.B. in der Hilfe) an. Weil du benutzt sie nicht so richtig:
Zitat:
MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz