çift taraflı çalışan procedure

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
alicilin
Üye
Mesajlar: 15
Kayıt: 23 Ara 2014 04:11
Konum: Şırnak
İletişim:

çift taraflı çalışan procedure

Mesaj gönderen alicilin »

Merhaba arkadaşlar. Delphide yeni sayılırım. Php de kullandığımız preg_match fonksiyonuna benzer bir procedure yazmak istedim. Benim sorunum Delphide procedure tanımlarken çift taraflı değişkeni setlength fonksiyonu ile set edemiyorum. Hata veriyor.
Kodlar şu şekilde;

Kod: Tümünü seç

procedure TForm1.Find(Pattern,Text: string; var Matches: Array Of String);
var
Regexpr : TRegEx;
Match   : TMatch;
I       : integer;
begin
    I := 0;
    Regexpr := TRegEx.Create(Pattern,[roIgnoreCase,roMultiline]);
    Match := Regexpr.Match(Text);
    SetLength(Matches,Match.Length);// burada hata veriyor
    while Match.Success do
    begin
        Matches[I] := Match.Value;
        I := I + 1;
        Match := Match.NextMatch;
    end;
end;
Kullandığım şekil;

Kod: Tümünü seç

    Data := IdHTTP1.Get('http://www.alifiratguler.com.tr');
    Find('\w',Data,Result);
    for I := 0 to Length(Result) - 1 do
    begin
      Memo1.Lines.Add(Result[I]);
    end;
Setlength Fonksiyonunu kaldırırsam bu defa da read of adress hatası veriyor.
Önemli olan bilip bilmemek değil. Öğrenebilecek kapasitede olmak
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: çift taraflı çalışan procedure

Mesaj gönderen sabanakman »

Bunun yerine TStringList kullanabilisiniz.
alicilin yazdı:

Kod: Tümünü seç

procedure TForm1.Find(Pattern,Text: string; const Matches: TStrings);
var
Regexpr : TRegEx;
Match   : TMatch;
I       : integer;
begin
    I := 0;
    Regexpr := TRegEx.Create(Pattern,[roIgnoreCase,roMultiline]);
    Match := Regexpr.Match(Text);
    Matches.Clear;//
    while Match.Success do
    begin
        Matches.Add(Match.Value);
        I := I + 1;
        Match := Match.NextMatch;
    end;
end;
Şeklindeki fonksiyonu aşağıdaki şekillerde kullanabilirsiniz.

Kod: Tümünü seç

Data := IdHTTP1.Get('http://www.alifiratguler.com.tr');
Find('\w',Data,Memo1.Lines);
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
alicilin
Üye
Mesajlar: 15
Kayıt: 23 Ara 2014 04:11
Konum: Şırnak
İletişim:

Re: çift taraflı çalışan procedure

Mesaj gönderen alicilin »

Hocam cevap için çok teşekkür ederim. Allah razı olsun.
Önemli olan bilip bilmemek değil. Öğrenebilecek kapasitede olmak
Cevapla