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
'' Arasını almak ?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: '' Arasını almak ?
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;
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
Re: '' Arasını almak ?
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ış.
//--- Görünüşü
Ben C++'ı yazılım dilini çok seviyorum
Ben Delphi yazılım dilini çok seviyorum
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
Re: '' Arasını almak ?
arkadaşlar teşekkürler ama malesef istediğimi yapamadım
Re: '' Arasını almak ?
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.
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