Memo uygulaması ile ilgili yardım.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ttronik77
Üye
Mesajlar: 2
Kayıt: 18 Eyl 2014 03:54

Memo uygulaması ile ilgili yardım.

Mesaj gönderen ttronik77 »

Merhaba Arkadaşlar,
Sınırlı Delphi bilgim ile bir program oluşturmaya çalışıyorum. Text dosyasında her satırda Tarih - Saat - Sayı1 - Sayı2 - Sayı3 şeklinde bilgi vardır. Ben iki farklı tarihteki Sayı1-2-3 lerin farkını almak istiyorum. Herhangi bir edit'e tüm satırı aktarabiliyorum. Tarih ile eşleşen satırdan Sayı1-2-3 değerlerini farklı editlere alamıyorum. Aşağıda örnek ile açıklamaya çalıştım. Bir yol gösteren olur ise memnun olurum. Saygılar...

Tarih saat ve 6 farklı sayıdan oluşan .txt dosyasının içeriğini Memo1 içine aktarıyorum. İçeriği şöyle...
14.9.2014 23:30 4.332,51 697,59 505,08 0 0 0
14.9.2014 23:00 4.330,44 697,59 505,08 0 0 0
13.9.2014 00:30 4.187,61 669,645 501,975 0 0 0
13.9.2014 00:00 4.185,54 668,61 501,975 0 0 0

Yapmak istediğim en basit olarak Edit1'e girdiğim Tarih ile eşleşen ilk satırdaki 3 farklı sayıyı yine 3 farklı edite almak. Sonda bulunan 3 tane "0" gerekli değil.
Örnek; Edit1 içeriği "13.9.2014" .
Edit1=13.9.2014
Edit2=4.187,61
Edit3=669,645
Edit4=501,975
Kullanıcı avatarı
muratmutlu
Üye
Mesajlar: 57
Kayıt: 02 Tem 2005 02:44
Konum: Antalya

Re: Memo uygulaması ile ilgili yardım.

Mesaj gönderen muratmutlu »

Merhaba. Daha önceleri kendi işim için yazdığım bir kod vardı. Sanırım bu kod sizin işinizi görür.

Kod: Tümünü seç

function BoslukAdediVer(Text: String): Integer;
var
  a,b: Integer;
begin
  a := 0; b := 0;
  while a <= Length(Text) do
  begin
    if a > 0 then
      if (Copy(Text,a-1,1) <> ' ') and (Copy(Text,a,1) = ' ') then Inc(b);
    Inc(a);
  end;
  Result := b;
end;

function TextBoslugaGoreAl(Text: TCaption; Indeks: Integer): String;
var
  a, BoslukAdedi: Integer;
  TmpText, S: String;
begin
  Result := '';
  BoslukAdedi := 0;

  if Indeks  > BoslukAdediVer(Text) + 1 then Exit;

  for a := 1 to Length(Text) do
  begin
    if (Copy(Text,a-1,1) <> ' ') and (Copy(Text,a,1) = ' ') then
    begin
      Inc(BoslukAdedi);
      if Indeks = BoslukAdedi then Break;
      S := '';
    end else S := S + Copy(Text,a,1);
  end;

  Result := Trim(S);
end;
Kullanımı :

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  S: String;
begin
  S := '13.9.2014 00:30 4.187,61 669,645 501,975 0 0 0';

  Edit1.Text := TextBoslugaGoreAl(S, 1);
  Edit2.Text := TextBoslugaGoreAl(S, 3);
  Edit3.Text := TextBoslugaGoreAl(S, 4);
  Edit4.Text := TextBoslugaGoreAl(S, 5);
end;
Yukarıdaki kodda S değişkenini sabit olarak tanımladım. Onun yerine memo nun satırları arasında dönüp aktif satırdaki bilgi ile yazdığım TextBoslugaGoreAl fonksiyonunu kullanarak istediğin karşılaştırmayı yapabilirsin.
ttronik77
Üye
Mesajlar: 2
Kayıt: 18 Eyl 2014 03:54

Re: Memo uygulaması ile ilgili yardım.

Mesaj gönderen ttronik77 »

Teşekkür ederim. En kısa zamanda kendi programıma adapte edip deneyeceğim.
Cevapla