Mantık yardımı lütfen

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Mantık yardımı lütfen

Mesaj gönderen serbek_tr »

Selam arkadaşlar herkse hayırlı günler dilerim bir sorum olacak ama size fazla bilgi veremem bildiklerim ise şunlar

+ xx xxxx xxxxxxxxx xxxxx xxx xxxxx xx x
xxxx xxxxx xx x x xxxxx x x x xxxxx x x x x
xxxx x x xxxxx x x x x xxxxx x x x x x x

+ xxx xx x x x x xxxxx x x x x x x x xx x x
x x x xxxx x x x xx x x x xxxxx x x x x x xx
x x xxxxxx x x x x x x x x x x x x x x xxxxx

Şeklinde bir text dosyası olsun ben bu dosyayı okuyacağım ve başka bir dosyaya yazacağım başında artı işareti olan yerler parağraf başı ve her satırın sonunda enter var şimdi her satırın sonunda enter varsa hepsi paragraf diyecesiniz ama değil neyse işte ben bunu şu düzende kayıt etmek zorundayım

xx xxx x x x x xxxxxx x x x x x xx...................

x x x x x x xxxxx x x x x x xxxxx xx................

yani paragraf kısımlarını tek satır gösteceğim satır sonlarındaki #13 #10 karakterlerini sildim tamamı tek satır oldu.

mantık kurmada yardımcı olabilirseniz sevinirim teşekkür ederim
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Mantık kurmak konusunda değil de bu bilgiler ışığında bende meraktan başka bişi uyandırmadı.

- #10#13'leri silmeyi başardığınıza göre copy() fonksiyonuyla dilediğiniz yerden dilediğiniz kadar veriyi de alabileceğinizi düşünüyorum ve dolayısıyla olay basit bir döngüye kalıyor...

- Samimi söylüyorum burada ne yapmak isteyip de yapamadığınızı anlamadım...

- Her paragraf başlangıcını '+ xxx' olduğunu ve her satırı döngü içinde SATIR isimli bir string değişkene aktardığınızı varsayarsak, bu başlıklara konumlandığını anlamak için IF POS(' + xxx', SATIR) > 0 then ... şeklinde bir sorgu yetiyor...

- Artık bir veritabanı mı tanımlarsınız yoksa memo'ya Formatlı yazdırıp text olarak savetofile ile mi kaydedersiniz o size kalıyor....
Resim
Resim ....Resim
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Mesaj gönderen serbek_tr »

Özür dilerim anlatamadım o artı işaretini ne koydum oraya oraların tek satır haline dönüştürüleceğini anlatmak için söyle izah edeyim arkadaşlar

/////////////// bu dosyanın orijinali

-MİLLETVEKİLLERİNİN SPORA BAKIŞI
-G.Ü.'NDE YAPILAN ANKETTE MİLLETVEKİLLERİ, TÜRK
SPORUNUN EN ÖNEMLİ SORUNUNUN SPOR TESİSLERİNİN
YETERSİZLİĞİ OLDUĞUNU BİLDİRDİLER
-ANKETE KATILAN MİLLETVEKİLLERİNİN YÜZDE 58.3'Ü,
SPORA AYRILAN PAYI YETERSİZ BULDU
-MİLLETVEKİLLERİNİN YÜZDE 53.3'Ü, DAHA ÖNCE FUTBOL OYNAMIŞ

ERZURUM (A.A) - 05.01.2005 - Milletvekillerine göre Türk sporunun
en önemli sorunu, spor tesislerinin yeterli düzeye çıkarılamaması.
Gazi Üniversitesi Beden Eğitimi ve Spor Yüksekokulu Öğretim Üyesi
Yrd.Doç.Dr.Fatih Yenel ile araştırma görevlileri Hamdi Alper Güngörmüş
ve Baki Yılmaz tarafından gerçekleştirilen ''Milletvekillerinin Türk
sporunun sorunlarına ilişkin görüşleri'' başlıklı araştırmada, 120
milletvekilinin spora bakışları değerlendirildi.
Milletvekillerinin spora bakışlarını değerlendirmek amacıyla 22
sorudan oluşan anket çalışmasının yapıldığı araştırmada, Türk sporunun
en önemli sorunu olarak, spor tesislerinin yeterli düzeyde olmaması
gösterildi.
/////////////////////////
yukarıdaki dizilişin

////////////
-MİLLETVEKİLLERİNİN SPORA .........{bir sonraki paragrafa kadar aynı paragraf tek satırda devam edecek }

ERZURUM (A.A) - 05.01.2005 - .........{bir sonraki paragrafa kadar aynı paragraf tek satırda devam edecek }

Gazi Üniversitesi Beden Eğitimi.........{bir sonraki paragrafa kadar aynı paragraf tek satırda devam edecek }

Milletvekillerinin spora bakışlarını .........{bir sonraki paragrafa kadar aynı paragraf tek satırda devam edecek }
/////
yapmak istediğim yukarıdaki format ama dediğim gibi #13 #10 kodlarını sildiğim zaman

orijinal yazının tamamı tek satır oluyor parağraf başlarını nasıl ayır edeceğimde paragrafı alt satırda bırakacağım

umarım şimdi anlatabilmişimdir
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

#10#13'leri ayıklayınca birer satıra dönüşüyorsa işin kolay.

- Bu text'in Memo1'de olduğunu varsayalım,
- İki tane TStringList Tanımlarsın...

- Liste1 ve Liste2 olsun. Liste1'de Konu başlıkları 1..n tane listelenir,
- Liste2'de de Konu detayları 1..n tane listelenir. Şöyle ki...

Kod: Tümünü seç

Var
  Liste1, Liste2 : TStringList;
  Sayac : Integer;
begin
  Liste1 := TStringList.Create;
  Liste2 := TStringList.Create;
  Sayac := 0;
  Repeat
    Liste1.Add(Memo1.Lines[Sayac]);
    Inc(Sayac);
  Until (Sayac > Memo1.Lines.Count-1) or (Trim(Memo1.Lines[Sayac]) = '');
  Repeat
    Liste2.Add(Memo1.Lines[Sayac]);
    Inc(Sayac);
  Until (Sayac > Memo1.Lines.Count-1) or (Trim(Memo1.Lines[Sayac]) = '');
  // İşte burada Liste1'in her elemanına karşılık 
  // Liste2'nin aynı indexli elemanı karşılığıdır...
  Liste2.Free;
  Liste1.Free;
end;
Resim
Resim ....Resim
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Mesaj gönderen serbek_tr »

Sorunumu çözdüm arkadaşlar teşekkür ederim

Size tam kodunu veriyorum anlatmaktansa kod satırlarını gönderiyorum
anlatmaktan daha iyidir.

Arakdaşlar Bu arada bu kodlar text file Macintosh karakterleine dönüştürülme işlemidir. Umarım bu yöndende işinize yara gerçi biraz süslü püslü olmuş mesaj falan o kısımlar benim tercihim yalnız bu kodlar çözmeye çalıştığım paragraf başı olayı ile birlikte o kısmın neresi olduğunu belirttim Teşekkür ederim

Kod: Tümünü seç

procedure TEditor_Frm.PcToMacBtnClick(Sender: TObject);
var
  F1, F2: TextFile;
  Ch: Char;
  X: Integer;
  EndOf: Boolean;
  Bos:String;

begin
  EndOf := False;
  MessageF('Mac Karakter Setine Dönüştür'
  ,'Açık belgenin karakterleri Mac karakter setine dönüşecek.'
  ,'Devam etmek istiyor musunuz?'
  ,'Editor_Frm'
  ,'MQ'
  ,2);
  If MessageIn='Hayır' Then Abort;

    ConvertDialog.Title:='Mac Dönüştürme İçin Dosya Kaydet';
    ConvertDialog.Execute;
    If ConvertDialog.FileName = '' Then
    Begin
      MessageF('Mac Karakter Setine Dönüştürme Tamamlanamadı.'
      ,'Kayıt edilecek bir dosya adı belirtmediğiniz için'
      ,'Dönüştürme işlemi yapılamadı!'
      ,'Editor_Frm'
      ,'MV'
      ,1);
      Exit;
    End;
    Application.CreateForm(TWaitF,WaitF);
    WaitF.label1.Caption:='Dönüştürme işlemi için belge temp"e yazılıyor...';
    WaitF.WaitPanelText.Caption :='Pc, Mac Dönüşümü yapılıyor...';
    WaitF.Gauge.MaxValue:=Length(ConvertEditor.Text);
    WaitF.Show;
    WaitF.Update;
    Sleep(200);
    AssignFile(F2, ConvertDialog.Filename+'.txt');
    Rewrite(F2);
    ConvertEditor.Lines:=Editor.Lines;
    ConvertEditor.Lines.SaveToFile('C:\BaseEditor\Temp');
    AssignFile(F1, 'C:\BaseEditor\Temp');
    Reset(F1);

    X:= 0;
    While Not Eof(F1) Do
    Begin
      X:= X+1;
      WaitF.Gauge.Progress:= X;
      WaitF.Update;
      Read(F1, Ch);
      If Ch = Chr(231) then Ch := Chr(141);
      If Ch = Chr(199) then Ch := Chr(130);
      If Ch = Chr(240) then Ch := Chr(219);
      If Ch = Chr(208) then Ch := Chr(218);
      If Ch = Chr(246) then Ch := Chr(154);
      If Ch = Chr(214) then Ch := Chr(133);
      If Ch = Chr(254) then Ch := Chr(223);
      If Ch = Chr(252) then Ch := Chr(159);
      If Ch = Chr(253) then Ch := Chr(189);
      If Ch = Chr(220) then Ch := Chr(185);
      If Ch = Chr(221) then Ch := Chr(186);
      If Ch = Chr(189) then Ch := Chr(221);
      If Ch = Chr(186) then Ch := Chr(220);
      If Ch = Chr(185) then Ch := Chr(134);

           ////// bu kısmı kullanmaya bilirsiniz////
       If Ch=Chr(13) Then Ch:=Chr(32);
       If Ch=Chr(10) Then
       Begin
         Read(F1, Ch);
         If Ch=Chr(32) Then
         Begin
           Ch:=Chr(10);
           Write(F2, Ch);
           Ch:=Chr(32);
           Write(F2, Ch);
         End
         Else
         Begin
           //Ch:=Chr(32);
           Write(F2, Ch);
         End;
       End
       Else
       Write(F2, Ch);
                    ///////// Bu kısma kadar sadece bu kısım yerine 
                    ///////        Write(F2, Ch); yazmanız yeterli
 



    End;
    WaitF.Hide;
    WaitF.Free;
    CloseFile(F2);
    CloseFile(F1);
    ConvertEditor.Lines.LoadFromFile('C:\BaseEditor\Temp');
    DeleteFile('C:\BaseEditor\Temp');


  ConvertDialog.FileName:='';
end;
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Cevapla