memoda belli bir yerden belli bir yere kopyalama yapma

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

memoda belli bir yerden belli bir yere kopyalama yapma

Mesaj gönderen seci20 »

ustalarım merhaba bir konuda takıldım.şimdi memoya yazılan bir sayı karakterileri var.söyle gösterim.

Kod: Tümünü seç

0,425-94-110
şeklinde.yanlız bunun ilerisinde ve gerisinde karakterlerde bulunuyor bu sayı sürekli olarak degısıyor bazen söyle oluyor

Kod: Tümünü seç

0,5-94-110
bazende söyle

Kod: Tümünü seç

0,45-94-1
tabi sürekli olarak farklı sayılar cıkıyor oraya ben bu sayıyı almam gerekıyor ve edit text yazdırmam gerekiyor ama onunde ve arkasında karakterler oldugu ıcın sureklı olarak bu sayıyı alamıyorum copy komutunu kullanıyorum ama dedıgım gıbı sayının karakter sayısıda degısıklık gosterdıgı ıcın onuda tam ayarlama yapamıyorum mesela 14 karakterse ben 16 yazdıysam ekstra olarak ılerındekı karakterden 2 sayı daha alıyor bunu nasıl ayarlıyabılırım sımdıden cok tesekkur ederım....
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

Re: memoda belli bir yerden belli bir yere kopyalama yapma

Mesaj gönderen erkan1525 »

Dostum senin konunun adı regexp (Regular Expression)

Ama belliki hiç tanışmamışsın bu durumda öğrenmen biraz zor ve uzun sürebilir. Ama mutlaka öğren çok dehşet işelere yarıyor tüm dillerde var bu regexp ve kullanımı çok benzer.

Regexp olmadan da halletmek mümkün.

zannedersem bu değer 0, ile başlıyor önce onu bul. sonrada 3. tireyi ara ve son olarakda tireden sonra numara olmayan karakteri bul ve bitti hadi sana bir torpilde yapayım

Kod: Tümünü seç

function Sayimi(veri:string):boolean;
var
kalip:string;
begin
  kalip:='0123456789';
  if pos(veri,kalip)>0 then
    result:=True
  else
    result:=false;
end;

function NoBul(veri:string):string;
var
i,bas, son:integer;
begin
  if length(veri)>0 then begin
    bas:=pos('0,', veri);

    for i:=bas+2 to length(veri)-1 do begin
      if Not ( (copy(veri,i,1)='-') OR ( SayiMi(copy(veri,i,1)) ) ) then begin
        son:=i;
        break;
      end;
    end;

    result:=copy(veri,bas,son-bas);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  edit2.Text:=NoBul(edit1.Text);
end;
seci20

Re: memoda belli bir yerden belli bir yere kopyalama yapma

Mesaj gönderen seci20 »

erkan1525 yazdı:Dostum senin konunun adı regexp (Regular Expression)

Ama belliki hiç tanışmamışsın bu durumda öğrenmen biraz zor ve uzun sürebilir. Ama mutlaka öğren çok dehşet işelere yarıyor tüm dillerde var bu regexp ve kullanımı çok benzer.

Regexp olmadan da halletmek mümkün.

zannedersem bu değer 0, ile başlıyor önce onu bul. sonrada 3. tireyi ara ve son olarakda tireden sonra numara olmayan karakteri bul ve bitti hadi sana bir torpilde yapayım

Kod: Tümünü seç

function Sayimi(veri:string):boolean;
var
kalip:string;
begin
  kalip:='0123456789';
  if pos(veri,kalip)>0 then
    result:=True
  else
    result:=false;
end;

function NoBul(veri:string):string;
var
i,bas, son:integer;
begin
  if length(veri)>0 then begin
    bas:=pos('0,', veri);

    for i:=bas+2 to length(veri)-1 do begin
      if Not ( (copy(veri,i,1)='-') OR ( SayiMi(copy(veri,i,1)) ) ) then begin
        son:=i;
        break;
      end;
    end;

    result:=copy(veri,bas,son-bas);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  edit2.Text:=NoBul(edit1.Text);
end;
hocam çok teşekkür ederim üstünde bir kaç oynamayla olayı çözüm ama sayı yerine normal harf vb. getirmeyi bir türlü başaramadım.söyle açıklıyım.

örneğin şu şekilde memoya yazımız geldi

Kod: Tümünü seç

+HEADINFO:1,
Model Name = GT-I8160
Country/customer = -
Customer Code = EPL
Date = -
Charger = -
S/W version = I8160XXNB1
Unique Number = CM401EC1B40C89F
Memory Name = -
Sec Code = -
burdaki modelname den countriye kadar olan kısmı alıcam mesela bunu bir turlu başaramadım.sayı olarak olsa sorunsuz hallettim ama harf olarak bir turlu yazdıramadım harf konusundada yardımcı olurmusunuz rica etsem ?
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

Re: memoda belli bir yerden belli bir yere kopyalama yapma

Mesaj gönderen erkan1525 »

Dotum dostum sen ne zaman başladın programlamaya....

metin := 'METNİNİZ';

bas:=Pos('Model Name = ', metin);
son:=Pos('Country/customer',metin);

uzunluk:=son-(bas+13);

istediginyen:=copy(Metin, bas+13,uzunluk)
Cevapla