Memo Pencesinde Belirtilen Yazıyı Gizleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
seci20

Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen seci20 »

Arkadaşlar Merhaba memo penceresinde istemediğim bazı yazıları nasıl engellerım örneğin bir AT komutu gönderdim comport1. e ve memoda bu gönderdiğim at komutunu görmek istemiyorum ama bazı yerlerını.Örneğin info komutu verdiğimde onun memoda yazmasını istiyorum ama verdiğim info komutunu görmek istemıyorum gizli kalmasını istiyorum. örneğin alttaki kodlarda belirttiğim gibi

Kod: Tümünü seç

begin
smemo1.Clear;
comport1.open;
comport1.ShowSetupDialog;
ComPort1.WriteStr('AT'+Chr(13));
Sleep(2000);//2sn
ComPort1.WriteStr('AT+HEADINFO=1,1'+Chr(13));
Sleep(2000);//2sn
end;
AT+HEADINFO=1,1 şu komutun karşılığını görmek istiyorum ama verdiğim komut gözüksün istemıyorum üstteki AT komutununda aynı şekilde görülmesini istemiyorum
yardımcı olucak arkadaslara şimdiden çok teşekkür ederim..
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen Lord_Ares »

iki tane Memo kullan. Bir tanesinin görünürlüğünü false yap komutları ondan gönder aynı anda ikinci memeya yani görünen memoda da görmek istediğin yazıyı göster. Aklıma gelen en basit çözüm bu. İkinci bir yol ise Tstringlist tipinde bir değişken tanımlayıp işlemleri bu değişken üzerinden yap. Görmek istemediğin yerleri Pos fonksiyonu kullanarak bul ve kaldır sonra kalan yazıyı memoda göster. Bu işi için string parseleme işlemlerine bakabilirsin. Örneğin forumda Aradansec adlı kulllanışlı ve basit bir fonksiyon vardı.
Kolay gelsin
seci20

Re: Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen seci20 »

hocam öncelikle cevap verdiğiniz için çok teşekkür ederim ama ben daha yolun başında oldugum için tam anlamıyla dediklerinizi uyguluyamadım.bana bir örnek gösterebilirseniz çok memnun olurum ben demek istediğimi resimli bir şekildede göstermek istiyorum.memo2 dediğiniz gibi yaptığımdada aynı yazı memo2 yede geçiyor.

Kod: Tümünü seç

procedure TForm2.sButton2Click(Sender: TObject);
begin
comport1.ShowSetupDialog;
sprogressbar1.Position:=sprogressbar1.Position+1;
if sprogressbar1.Position=100 then
smemo1.Clear;
sProgressBar1.Position:=sProgressBar1.Position+10;
comport1.open;
sProgressBar1.Position:=sProgressBar1.Position+20;
ComPort1.WriteStr('AT'+Chr(13));
sProgressBar1.Position:=sProgressBar1.Position+50;
Sleep(2000);//2sn
ComPort1.WriteStr('AT+HEADINFO=1,1'+Chr(13));
sProgressBar1.Position:=sProgressBar1.Position+80;
Sleep(2000);//2sn
sProgressBar1.Position:=sProgressBar1.Position+100;
begin
timer1.Enabled:=false;
showmessage ('Cihaz Başarıyla Okunmuştur.');
yazdığım komutlar aynı şu şekildedir.

Resim

resimde görüldüğü gibi komutlarla beraber gözüküyor.yani ben memo penceresine bir girdi yapmıyorum butona bastığımda verdiğim komutları uyguluyor.ama ben sadece şu yazıları memoda gözükmesini istiyorum.

Kod: Tümünü seç

Model Name = SM-N900
Country/customer = -
Customer Code = SER
Date = -
Charger = -
S/W version = N900XXUDNA6
Unique Number = CV2006A45473090
Memory Name = -
Sec Code = -
yardım ederseniz cok memnun olurum şimdiden çok teşekkür ederim.
carsoft
Üye
Mesajlar: 138
Kayıt: 01 Ağu 2014 12:27

Re: Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen carsoft »

Memo yerine TRichedit kullanabilirsin. ama Memo kullanacaksan bu örnek sana bir fikir verebilir.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
const
dots='*******************************************' ;
var
SL:tStringList;
z,i:integer;
begin
sl:=tStringList.Create;
sl.Delimiter:=' ';
sl.DelimitedText:=memo1.Text;
TRY
memo2.Text:=memo1.Text;
randomize;
for i := 0 to 30 do 
begin
z:=random(SL.Count-1);
sl[z]:=copy(dots,0,length(sl[z]));
end;
FINALLY
memo1.text:=sl.DelimitedText;
sl.Free;
end;

end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen mrmarman »

(1) Bir TMemo koyun ama gizli olsun. Visible := False; yani.
(2) Sizin ComPort bileşeni çıktısını bu gizli olan Memo'ya göndersin. Ekranda görünmesin.
(3) O gizli formun onChange eventine gelen satırları baştan sona dolaşan bir döngü kurun, komut olmayabları ekranda görünen başka ikinci bir TMemo'ya ADD() ile eklesin.

oldu size komutlar filtrelenmiş Memo. Basit bir göz aldatmacası, başka bir şey değil...
Resim
Resim ....Resim
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen thelvaci »

seci20 yazdı:Arkadaşlar Merhaba memo penceresinde istemediğim bazı yazıları nasıl engellerım örneğin bir AT komutu gönderdim comport1. e ve memoda bu gönderdiğim at komutunu görmek istemiyorum ama bazı yerlerını.Örneğin info komutu verdiğimde onun memoda yazmasını istiyorum ama verdiğim info komutunu görmek istemıyorum gizli kalmasını istiyorum. örneğin alttaki kodlarda belirttiğim gibi

Kod: Tümünü seç

begin
smemo1.Clear;
comport1.open;
comport1.ShowSetupDialog;
ComPort1.WriteStr('AT'+Chr(13));
Sleep(2000);//2sn
ComPort1.WriteStr('AT+HEADINFO=1,1'+Chr(13));
Sleep(2000);//2sn
end;
AT+HEADINFO=1,1 şu komutun karşılığını görmek istiyorum ama verdiğim komut gözüksün istemıyorum üstteki AT komutununda aynı şekilde görülmesini istemiyorum
yardımcı olucak arkadaslara şimdiden çok teşekkür ederim..
Memo'da görünmesini istemediğiniz bazı bilgiler var ise, bu bilgileri memoya yazmayın o halde. Neden yazıyorsunuz ?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen mrmarman »

Benim anladığım da, Memo bir thread'den besleniyor gibi geldi. ondan böyle cevap yazdım. Yanlış anlamış da olabilirim.
Resim
Resim ....Resim
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen thelvaci »

Üstad nereden beslenirse beslensin; yazdırana bakmak lazım değil mi ;) Memoya yazılan noktaya gidilir ne yazdırılmayacak ise o noktada kontrolü yapılır. Anlayamadım açıkçası ben sorunu.
seci20

Re: Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen seci20 »

arkadaşlar cevap verdiğiniz için hepinize çok teşekkür ederim.bazı ustalarımızın dediği gibi konuyu size yanlıs lanse ettim.özür diliyorum.atladığım bir konu var oda şu.
altta belirttiğim komutu size söylemeyi unuttum.

Kod: Tümünü seç

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
data:string;
begin

ComPort1.Readstr(data,Count);
Memo1.Lines.Add(data);

end;
yukardaki kodlarda görüldüğü gibi memoya ne yazılcağına ben karar veremıyorum.comporta cihazı okumak için koyduğum object karar veriyor ben string data olarak belirlediğim için memoya komutlarım dahilinde yazıyor.aslında doğru yapıyorum.ama okumakla beraber comport kodlarımıda read yaptığı için memoda verdiğim komutlarda gözüküyor.örneğin;

Kod: Tümünü seç

ComPort1.WriteStr('AT+HEADINFO=1,1'+Chr(13));
normal şartlarda bu komutun memoda gözükmemesi lazım ama yukardaki objede memoya tanımladığım için normal olarak gözüküyor.sorunu tam olarak anladığınızı umuyorum.2 memo penceresi açsamda gene aynı sorunlar oluyor.şurda birdaha belirteyim.

Kod: Tümünü seç

ComPort1.WriteStr('AT+HEADINFO=1,1'+Chr(13));
burdaki 'AT+HEADINFO=1,1' komutunu görünmesini istemiyorum memoda ama karşılığı görmek istiyorum.yardım eden üstatlarıma şimdidne çok teşekkür ederim.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen mrmarman »

data string bir ifade olduğuna göre Memo1.Lines.add satırından hemen önce bu data değişkeni içeriğini sadeleştir o dan sora sadeleşmiş hali eklensin.

Farkedeceksin ki aslında kontrol hala senin ellerinde. Neyi ne zaman ekleyeceğine sen karar veriyorsun.

POS() fonksiyonunu kullanmayı biliyor musun. Cevap evet olmalı. Değilse önce bu noktayı çözmen lazım aksi halde filtre işlemini yapman mümkün değil.
Resim
Resim ....Resim
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen SimaWB »

Kod: Tümünü seç

Memo1.Lines.Add(data);
bu kod size ait ama "yukardaki kodlarda görüldüğü gibi memoya ne yazılcağına ben karar veremıyorum" yazmışsınız.
Bu ne yaman çelişki :(
There's no place like 127.0.0.1
seci20

Re: Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen seci20 »

SimaWB yazdı:

Kod: Tümünü seç

Memo1.Lines.Add(data);
bu kod size ait ama "yukardaki kodlarda görüldüğü gibi memoya ne yazılcağına ben karar veremıyorum" yazmışsınız.
Bu ne yaman çelişki :(
bu kod bana ait değil bu comportun bir bileşeni read yapması ıcın hocam.kendim yazdım sayılmaz.ama cihaz okutmak ıcın buna ihtiyacım var.yanlıs anlasılmasın kodu çalmadım yanı ortada bir emek hırsızlıgı kesınlıkle soz konusu degıl.
seci20

Re: Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen seci20 »

mrmarman yazdı:data string bir ifade olduğuna göre Memo1.Lines.add satırından hemen önce bu data değişkeni içeriğini sadeleştir o dan sora sadeleşmiş hali eklensin.

Farkedeceksin ki aslında kontrol hala senin ellerinde. Neyi ne zaman ekleyeceğine sen karar veriyorsun.

POS() fonksiyonunu kullanmayı biliyor musun. Cevap evet olmalı. Değilse önce bu noktayı çözmen lazım aksi halde filtre işlemini yapman mümkün değil.
hocam tekrardan teşekkür ederim ama ben daha orta seviyede program yazıyorum.bu kavramlara cok yabancıyım yanı.bir ornek tarzı yokmu program yada onun ustunden gitsem.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen unicorn64 »

seci20 yazdı:
mrmarman yazdı:data string bir ifade olduğuna göre Memo1.Lines.add satırından hemen önce bu data değişkeni içeriğini sadeleştir o dan sora sadeleşmiş hali eklensin.

Farkedeceksin ki aslında kontrol hala senin ellerinde. Neyi ne zaman ekleyeceğine sen karar veriyorsun.

POS() fonksiyonunu kullanmayı biliyor musun. Cevap evet olmalı. Değilse önce bu noktayı çözmen lazım aksi halde filtre işlemini yapman mümkün değil.
hocam tekrardan teşekkür ederim ama ben daha orta seviyede program yazıyorum.bu kavramlara cok yabancıyım yanı.bir ornek tarzı yokmu program yada onun ustunden gitsem.
en temel string fonksiyonlarından POS u bilmiyorsanız, önceki mesajda söylenenlere rağmen

Kod: Tümünü seç

Memo1.Lines.Add(data);
satırından hemen önce data değişkeninin değerini değiştirip sonucu göremiyorsanız,
comPort üzerine, AT komutları üzerine çalışmadan önce delphinin temellerini öğrenmelisiniz...

biliyorum bu şekilde söylenince programlamaya yeni başlamış bir çok arkadaşımız gibi siz de "yardım etmeyecekseniz eleştiri mesajı da yazmayın" vs şeklinde düşünebilirsiniz, ama programlama hakkında biraz tecrübe edindiğinizde aslında size yardımcı olmaya çalıştığımızı anlayacaksınız...

programlamayı gerçekten iş olarak yapacaksanız, işe programlamanın temellerini öğrenerek başlamalısınız... yoksa her takıldığınızda örnek kod isteyerek bu işi öğrenemezsiniz...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
seci20

Re: Memo Pencesinde Belirtilen Yazıyı Gizleme

Mesaj gönderen seci20 »

unicorn64 yazdı:
seci20 yazdı:
mrmarman yazdı:data string bir ifade olduğuna göre Memo1.Lines.add satırından hemen önce bu data değişkeni içeriğini sadeleştir o dan sora sadeleşmiş hali eklensin.

Farkedeceksin ki aslında kontrol hala senin ellerinde. Neyi ne zaman ekleyeceğine sen karar veriyorsun.

POS() fonksiyonunu kullanmayı biliyor musun. Cevap evet olmalı. Değilse önce bu noktayı çözmen lazım aksi halde filtre işlemini yapman mümkün değil.
hocam tekrardan teşekkür ederim ama ben daha orta seviyede program yazıyorum.bu kavramlara cok yabancıyım yanı.bir ornek tarzı yokmu program yada onun ustunden gitsem.
en temel string fonksiyonlarından POS u bilmiyorsanız, önceki mesajda söylenenlere rağmen

Kod: Tümünü seç

Memo1.Lines.Add(data);
satırından hemen önce data değişkeninin değerini değiştirip sonucu göremiyorsanız,
comPort üzerine, AT komutları üzerine çalışmadan önce delphinin temellerini öğrenmelisiniz...

biliyorum bu şekilde söylenince programlamaya yeni başlamış bir çok arkadaşımız gibi siz de "yardım etmeyecekseniz eleştiri mesajı da yazmayın" vs şeklinde düşünebilirsiniz, ama programlama hakkında biraz tecrübe edindiğinizde aslında size yardımcı olmaya çalıştığımızı anlayacaksınız...

programlamayı gerçekten iş olarak yapacaksanız, işe programlamanın temellerini öğrenerek başlamalısınız... yoksa her takıldığınızda örnek kod isteyerek bu işi öğrenemezsiniz...
hocam kesinlikle bu işe yıllarını vermiş olan insanlara kalkıp oyle ukalaca yok elestırı falan yapmayın kesinlikle demem.bu saygısızlık harici terbiyesizlikte olur.ben kolay kolay yardım istiyen birisi değilim.ama bunu bayadır araştırıyorum ve çözemedim ondan dolayı örnek kod istedim siz haklısınız ama araştırmıyanlar için.
Cevapla