'' Arasını almak ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ready4die
Üye
Mesajlar: 40
Kayıt: 04 Eki 2007 10:17

'' Arasını almak ?

Mesaj gönderen ready4die »

s.a
ben memoya yazdığım string içinden '' arasındakileri almak istiyorum yani 'ready4die' bu 2 tırnak arasındaki ready4die'ı nasıl alabilirim ?
teşekkürler
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Re: '' Arasını almak ?

Mesaj gönderen mudipasa »

S.A.
En son seçim zamanı bir parti Batman da ilçelere ait seçmen dosyasını TXT olarak getirmişti. bize bunu Excel e aktarırmısın diye. formatı şöyleydi :
TC KİMLİK NO;SEÇMEN NO;ADI;SOYADI;İLK SOYADI;ANA ADI;BABA ADI;CİNSİYETİ;DOĞUM YERİ;DOĞUM TARİHİ;NÜFUS İLİ;NÜFUS İLÇESİ;ADRES İL ADI;ADRES İLÇE ADI;ADRES MUHTARLIK ADI;ADRES CADDE/SOKAK ADI;KAPI NO;DAİRE NO

bende onu haliyle bir tabloya alıp excele aktardım. o zaman kullandığım kodlar şunlardı. belki işine yarar. burdaki amaç ";" ile ayrılmış bilgiler arasını almak.

procedure TForm1.Button1Click(Sender: TObject);
Var
i,uzun,kac: Integer; Dosya: TextFile;
dosyaadi,Satir,sonuc:AnsiString;
begin
OpenDialog1.Execute;
if OpenDialog1.FileName <> '' then
begin
dosyaadi := OpenDialog1.FileName;
AssignFile(Dosya, dosyaadi);
Reset(Dosya);
While Not Eof(Dosya) Do
Begin
Readln(Dosya, Satir);
uzun := Length(Sonuc);
Table1.Insert;
for i:= 1 to 17 do
begin
kac :=AnsiPos(';',Satir);//Nokta kaçıncı karakter
sonuc:=AnsiLeftStr(Satir,kac-1); //Noktadan öncesi
Delete(Satir,1,kac);//1. karakterden sonraki 5 karakteri at
case i of
1 : Table1TC.AsString := Sonuc;
2 : Table1SECMENNO.AsString := Sonuc;
3 : Table1ADI.AsString := Sonuc;
4 : Table1SOYADI.AsString := Sonuc;
5 : Table1ILSOYADI.AsString := Sonuc;
6 : Table1ANAADI.AsString := Sonuc;
7 : Table1BABAADI.AsString := Sonuc;
8 : Table1CINS.AsString := Sonuc;
9 : Table1DYER.AsString := Sonuc;
10 : Table1DTAR.AsString := Sonuc;
11 : Table1NUFIL.AsString := Sonuc;
12 : Table1NUFILCE.AsString := Sonuc;
13 : Table1ADRESIL.AsString := Sonuc;
14 : Table1ADRESILCE.AsString := Sonuc;
15 : Table1ADRESMUH.AsString := Sonuc;
16 : Table1ADRESCDSK.AsString := Sonuc;
17 : Table1KAPINO.AsString := Sonuc;
END;
end;
Table1.Post;
End;
end;
end;

Kod: Tümünü seç

www.muratdişikırık.com.tr
Kullanıcı avatarı
SHURZAN
Üye
Mesajlar: 73
Kayıt: 06 Eki 2007 05:34
Konum: İstanbul

Re: '' Arasını almak ?

Mesaj gönderen SHURZAN »

Merhaba delhpi forumdaş arkadaşlar;
Ne zamandır formunuzun üyesiyim ancak Ben C++ ailesinden olduğumdan burada bazı konulara giremedim kısmet bu güneymiş.
Benim arkadaşa benzer bir önerim var bir çok yerde hatta bu forumda da raslamıştım getlines fonksiyonunu kullanman
bu fonksiyon'u kendin yazmalısın yani hazır kütüphane fonksiyonu değil aşağıda C++ örneğini vereceğim bu fonksiyonla string hangi karakter(ler) ile ayrılmışsa o karaketerler arasındakini TStringList'in text değeri olarak döndürür daha sonra bunu ne yapacağın sana kalmış.

Kod: Tümünü seç

//-----------------------------------------------------------------------------
String getlines(const String strx, char apostrof, unsigned int count = 0) 
// 3. parametre varsayılandır kaç tane olduğunu biliyorsanıc bu parametreyi kullanabilirsiniz
{
TStringList *tg = new TStringList;
 String x, x2, x3;
 x = strx; 
 int m, n, acount = 0;
 n = x.Length();
 if( count == 0){
 for(m = 1;m <= n; ++m)
  if(x[m] == apostrof)
    ++acount;
 }
 else  acount = count;

  for(m = 1;m <= acount; ++m)
  {
   x2 = x.SubString(1,x.Pos(apostrof)-1);
   tg->Add(x2.Trim());
   x2 = x.SubString(x.Pos(apostrof)+1, x.Length());
   x = x2;
  }
  tg->Add(x.Trim());
  x3 = tg->Text;
  delete tg;
  return x3;
  } 
//---------------------------------------------------------------------------
//--Kullanımı
String degisken = "\"Ben C++'ı yazılım dilini çok seviyorum\" \"Ben Delphi yazılım dilini çok seviyorum\""
ShowMessage(getlines(degisken,"\"")); //  " arıyoruz tırnağın karaketer olarak belirtebilmemiz  için C++ kaçış karaketeri \ kullanırız! delphi de nasıl bilemiyorum!

//--- Görünüşü

Ben C++'ı yazılım dilini çok seviyorum
Ben Delphi yazılım dilini çok seviyorum
ready4die
Üye
Mesajlar: 40
Kayıt: 04 Eki 2007 10:17

Re: '' Arasını almak ?

Mesaj gönderen ready4die »

arkadaşlar teşekkürler ama malesef istediğimi yapamadım
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Re: '' Arasını almak ?

Mesaj gönderen mudipasa »

S.A.
ready4die arkadaşım işte sana kodlar. ben yaptım ve çalıştırdım gayet güzel çalışıyor. Forma iki adet Memo nesnesi ve bir tane de BitBtn koy. Memo1 de senin yazın olsun. Memo2 ye de senin tüm yazında nekadar ' ' arasında yazı varsa hepsini satır satır Memo2 ye atar. Bu arada Uses bölümüne StrUtils i eklemeyi unutmayalım. Benim Memo1 deki yazım Bugün 'Delphi' öğrenmek için 'güzel' bir gün.

procedure TForm1.BitBtn1Click(Sender: TObject);
var
yazi : AnsiString;
alinan : String;
begin
Memo2.Lines.Clear;
yazi := Memo1.Text;
Repeat
Begin
kac :=AnsiPos(#39,yazi);//Birinci apostorof kaçıncı karakter
Delete(yazi,1,kac); // öncesini sil
kac :=AnsiPos(#39,yazi);//ikinci apostorof kaçıncı karakter
alinan:=AnsiLeftStr(yazi,kac-1); //apostrof öncesini Memo2 ye aktar;
Memo2.Lines.Add(alinan); //IntToStr(basla));
Delete(yazi,1,kac); // bir sonraki ile arasını sil
End;
Until kac = 0;
end;

#39 senin istediğin apostorof simgesiydi. bunu istediğimiz bir karakterle değiştirebiliriz.

Kod: Tümünü seç

www.muratdişikırık.com.tr
Cevapla