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
Memo uygulaması ile ilgili yardım.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- muratmutlu
- Üye
- Mesajlar: 57
- Kayıt: 02 Tem 2005 02:44
- Konum: Antalya
Re: Memo uygulaması ile ilgili yardım.
Merhaba. Daha önceleri kendi işim için yazdığım bir kod vardı. Sanırım bu kod sizin işinizi görür.
Kullanımı :
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.
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;
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;
Re: Memo uygulaması ile ilgili yardım.
Teşekkür ederim. En kısa zamanda kendi programıma adapte edip deneyeceğim.