Przekształcić funkcję...

0

Cześć, mam do Was sprawę, czy ktoś by mógł przekształcic funkcję, bo sam niedam rady, czytałem już help na temat Pos z 12 raz i nadal mi niewychodzi :( Chodzi o to, że ta funkcja:

function DelBrack(s: string): string;
var
  i: Word;
  BRC: ShortInt;
begin
  Result := '';
  BRC := 0;
  for i := 1 to length(s) do
  begin
    if s[i] = '(' then
      Inc(BRC);
    if BRC = 0 then
      Result := Result + s[i];
    if s[i] = ')' then
      Dec(BRC);
  end;
end;

Robi z tekstu np.: z Test([email protected]) na samo Test, a ja bym chciał, żeby teraz to przekształcić, aby zamianiało mi tekst np.: Test([email protected]) na [email protected], czyli usuwało najpierw tekst do ( i potem niech zostawi tekst od ) i reszte usunie. Czy mogę na Was liczyć, proszę to dla mnie bardzo ważne...

0
funktion wyluskaj(s:string):string;
var i,j:integer;
begin
  i:=pos('(',s);  // nigdy nie pamietam kolejnosci parametrow,
  j:=pos(')',s);  // wiec tu mogą byc blędy
  if(i=0)or(j=0)then
    begin
      wyluskaj:='';
      exit;
    end;
  wyluskaj:=copy(s,i+1,(j-i)-1);
end;

// a jak będziesz mieć dupa(dupa(1)) to co? :-P - ŁF
// fakt, dupa ;p

0

eh, 5 minut z debugerem i sam byś to wymyślił

function DelBrack2(s: string): string;
var
  i: Word;
  BRC: ShortInt;
begin
  Result := '';
  BRC := 0;
  for i := 1 to length(s) do
  begin
    if s[i] = '(' then
      Inc(BRC);
    if BRC > 0 then
      Result := Result + s[i];
    if s[i] = ')' then
      Dec(BRC);
  end;
end;

(nie testowane)

0

eh, 5 minut z debugerem i sam byś to wymyślił

function DelBrack2(s: string): string;
var
  i: Word;
  BRC: ShortInt;
begin
  Result := '';
  BRC := 0;
  for i := 1 to length(s) do
  begin
    if s[i] = '(' then
      Inc(BRC);
    if BRC > 0 then
      Result := Result + s[i];
    if s[i] = ')' then
      Dec(BRC);
  end;
end;

(nie testowane)

Dzięki ŁK za chęci, wszystko działa prawie dobrze, tylko, że jak mam np.: komentarz ([email protected]) i wykonam delbrack2 to mi zostanie ([email protected]) w nawiasie, można jakoś usunąć ten nawias ? Proszę...

0

[sciana] [sciana] [sciana]

function DelBrack2(s: string): string;
var
  i: Word;
  BRC: ShortInt;
begin
  Result := '';
  BRC := 0;
  for i := 1 to length(s) do
  begin
    if s[i] = ')' then
      Dec(BRC);
    if BRC > 0 then
      Result := Result + s[i];
    if s[i] = '(' then
      Inc(BRC);
  end;
end; 

dostałęś ten kod tylko dlatego, że mi się nudzi. a następnym razem masz sam pomyśleć!

1 użytkowników online, w tym zalogowanych: 0, gości: 1