Metin ayırımı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 03:09
Konum: Azerbaycan, Bakü
İletişim:

Metin ayırımı

Mesaj gönderen AliZairov »

İyi akşamlar. Örnek şöyle bir metnim var.

Kod: Tümünü seç

Lorem Ipsum, dizgi ve baskı endüstrisinde kullanılan mıgır metinlerdir. Lorem Ipsum, adı bilinmeyen bir matbaacının bir hurufat numune kitabı oluşturmak üzere bir yazı galerisini alarak karıştırdığı 1500'lerden beri endüstri standardı sahte metinler olarak kullanılmıştır. Beşyüz yıl boyunca varlığını sürdürmekle kalmamış, aynı zamanda pek değişmeden elektronik dizgiye de sıçramıştır. 1960'larda Lorem Ipsum pasajları da içeren Letraset yapraklarının yayınlanması ile ve yakın zamanda Aldus PageMaker gibi Lorem Ipsum sürümleri içeren masaüstü yayıncılık yazılımları ile popüler olmuştur.
Ben metni Google TTS Api vasıtasıyla okutmak istiyorum. Apiyle tüm metni okutmak direk okumuyo hata veriyo. Bende metini ayırmak istiyom ayırdıkça okutacağım. Normal Pos ile metini ayıra bilirim amma ben , . ! dikate alarak ayırmasını istiyorum. Bunu nasıl yapa bilirim?
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Metin ayırımı

Mesaj gönderen greenegitim »

Benzer bir örnek viewtopic.php?f=2&t=32033
Mücadele güzelleştirir!
Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 03:09
Konum: Azerbaycan, Bakü
İletişim:

Re: Metin ayırımı

Mesaj gönderen AliZairov »

Merhaba. Teşekkür ederim. Ama biraz benim olay farklı. Amma çözüme ulaştım. Metni harf harf arıyarak ayrım işlemini yaptım.

Kod: Tümünü seç

procedure SetTag(Source: string; SL: TStringList);
var
  A, B: Integer;
  S, Temp: string;
  ST: IStringTokenizer; // uses HTTPUtil;
  I: Integer;
begin
  B := Length(Trim(Source));
  for A := 1 to B do
  begin
    S := Copy(Trim(Source), A, 1);
    if S = '!' then
    begin
      Temp := Temp + S + '^';
    end else
    if S = '?' then
    begin
      Temp := Temp + S + '^';
    end else
    if S = '.' then
    begin
      Temp := Temp + S + '^';
    end else
    if S = ',' then
    begin
      Temp := Temp + S + '^';
    end else
    begin
      Temp := Temp + S;
    end;
  end;
  ST := StringTokenizer(Temp, '^');
  for I := 0 to ST.countTokens - 1 do
  begin
    SL.Add(Trim(ST.nextToken));
  end;
end;

Kullanımı:

var
  I: Integer;
  SL: TStringList;
begin
  SL := TStringList.Create;
  SetTag(Text, SL);
  for I := 0 to SL.Count - 1 do
  begin
    ShowMessage(SL[I]);
  end;

Cevapla