AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit PosEx

Ein Thema von gangs-taas · begonnen am 23. Aug 2009 · letzter Beitrag vom 24. Aug 2009
Antwort Antwort
Seite 1 von 2  1 2      
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#1

Problem mit PosEx

  Alt 23. Aug 2009, 21:00
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]
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Problem mit PosExt

  Alt 23. Aug 2009, 21:06
Müsste das nicht umgedreht werden?

Delphi-Quellcode:
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;
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.
Und dann bekommst du die Stelle im String. Und das muss keine Zahl zw. 1 und 8 sein!

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#3

Re: Problem mit PosExt

  Alt 23. Aug 2009, 21:12
ups okay
danke
gute nacht :-d
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Problem mit PosExt

  Alt 23. Aug 2009, 21:20
Noch ein Tipp: Lass die Umlaute aus den Variablennamen.
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#5

Re: Problem mit PosExt

  Alt 23. Aug 2009, 21:23
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 ?

lg
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Problem mit PosEx

  Alt 23. Aug 2009, 21:43
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...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Problem mit PosExt

  Alt 23. Aug 2009, 23:29
Zitat von gangs-taas:
ich seh gerade es ist doch nicht das was ich meine
also ich erklär ecuh mal was ich eigl. wollte.
Genau das tut mein Code oben. Wenn auch jaenicke eigentlich recht hat.

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 hier).

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#8

Re: Problem mit PosEx

  Alt 24. Aug 2009, 16:52
doch ist mir klar

dein code hat nur irg. nicht funtkioniert ...

ja denke ich werde das ohne pos machen

danke
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#9

Re: Problem mit PosEx

  Alt 24. Aug 2009, 17:53
ihr müsst mir noch einmal helfen
ich hab das jetzt so gemacht

Delphi-Quellcode:
  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 ;
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

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 ?
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Problem mit PosEx

  Alt 24. Aug 2009, 18:02
Schau dir mal am besten die Copy() Methode (z.B. in der Hilfe) an. Weil du benutzt sie nicht so richtig:
Zitat:
S ist ein Ausdruck des Typs String oder dynamisches Array. Index und Count sind Integer-Ausdrücke. Copy gibt einen Teilstring oder ein Teilarray zurück, das Count Zeichen oder Elemente ab S[Index] enthält.
Du hast aber zwei Indizes (so?) genommen.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz