Autor Beitrag
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Di 02.12.03 22:03 
habe da mal eine Frage (steh grad ziemlich aufm schlacuh und denke und hoffe, dass das eigentlich nicht so schwer sein dürfte :D
ich habe ne datei, die in etwa so aufgebaut ist:
Zitat:
{83547}{83573}
{83574}{83621}

wie kann ich da jetzt die Werte zwischen den geschweiften Klammern um einen bestimmten Wert erhöhen?
habe da mit "pos" das Problem das das ja immer nur den ersten Eintrag findet :-/
thx =)
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 02.12.03 22:18 
Hier hab ich mal eben was gebastelt:

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:
25:
26:
27:
28:
procedure IncInBrackets(txt: pchar);
var
 cpy: pchar;
begin
 while txt^ > #0 do
 begin
  case txt^ of
   '{'while (txt^ in ['{''0'..'9''}']) do
        begin
         if txt^ = '}' then
         begin
          cpy := txt;
          dec(cpy);
          inc(cpy^);
          while (cpy^ = chr(ord('9') + 1)) do
          begin
           cpy^ := '0';
           dec(cpy);
           if cpy^ <> '{' then
            inc(cpy^);
          end;
         end;
         inc(txt);
        end;
  end;
  inc(txt);
 end;
end;


nach 99999 kommt 00000

aufruf Beispielsweise so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
 p: pchar;
begin
 p := pchar(memo1.text);
 IncInBrackets(p);
 memo1.text := p;
end;
olliterski
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 105
Erhaltene Danke: 2

Win7 64-Bit
D7 Ent.
BeitragVerfasst: Mi 03.12.03 03:38 
Fiji-Fighter hat folgendes geschrieben:
...
habe da mit "pos" das Problem das das ja immer nur den ersten Eintrag findet :-/
thx =)


haste schon mal darüber nachgedacht den Wert den PosEx zurückgibt als neuen Startwert einzufügen???

Beispiel:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
i:=1;

while i <> 0 do
  begin
      i:=PosEx('{',s,i)+1;
      // tue was auch immer - ersetzen, löschen etc.
  end;


...nur mal so als kurzen Tip (hab ich jetzt mal einfach so geschrieben!!!). PosEx() ist einfach Pos() erweitert um den letzen Wert, der besagt wo PosEx() das nächste mal mit dem suchen beginnen soll!

Vielleicht hilft es!

Viele Grüße

Oliver

_________________
Viele Grüße
Oliver
Raphael O. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mi 03.12.03 18:46 
thx hatte es jetzt auch so schon hinbekommen, aber das dürfte den Code nochmal vereinfachen ;)