• 26-02-2010, 15:57:39
    #1
    Ben memo1'e web sayfasından veri çekmek istiyorum ne yapmalıyım.
  • 27-02-2010, 23:34:38
    #2
    sayfanın kaynagını xml usingini kullanarak bir değişkende tut sonra ordan xml i tekrar memoya okutabılırsın
  • 28-02-2010, 07:52:56
    #3
    BND
    Üyeliği durduruldu
    charles adlı üyeden alıntı: mesajı görüntüle
    sayfanın kaynagını xml usingini kullanarak bir değişkende tut sonra ordan xml i tekrar memoya okutabılırsın


    Bunu indyhttp, ipwhttp gibi bileşenlerin get yöntemiyle kolayca yapabilirsiniz. Aşağıda yazdığım fonksiyon bu işlemi Windows'un/Winsock'un kök yordamlarıyla halleder. Böylece bileşenlerin kaprislerinden sıyrılırsınız:

    uses satırına:
    urlmon ve shellapi ekleyin.


    function BNDSitecek(const fileURL, FileName: String): boolean;
    const
    Buffersize = 1024;
    var
    hSession, hURL: HInternet;
    Buffer: array[1..BufferSize] of Byte;
    BufferLen: DWORD;
    f: File;
    sAppName: string;
    begin
    result := false;
    sAppName := ExtractFileName(Application.ExeName) ;
    hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0) ;
    try
    hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0) ;
    try
    AssignFile(f, FileName) ;
    Rewrite(f,1) ;
    repeat
    InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen) ;
    BlockWrite(f, Buffer, BufferLen)
    until BufferLen = 0;
    CloseFile(f) ;
    result := True;
    finally
    InternetCloseHandle(hURL)
    end
    finally
    InternetCloseHandle(hSession)
    end
    end;



    Örnek kullanımı şöyle:


    procedure TForm2.Button1Click(Sender: TObject);
    var
    site, kodlar:string;
    begin
    site:='http://www.bnd.com.tr';
    kodlar:=extractfilepath(application.exename)+'bnd. bnd';
    if BNDSitecek(site, kodlar)=true then
    begin
    memo1.lines.loadfromfile(extractfilepath(applicati on.exename)+'bnd.bnd');
    showmessage(site+' sitesini memo bileşeni içine başarıyla aktardım.')
    else
    showmessage(site+' sitesini bulamadım veya aktaramadım. Internet bağlantısını, programın bulunduğu dizinin yazılabilir olup olmadığını kontrol ediniz.');

    end;


  • 28-02-2010, 14:06:43
    #4
    BND neden kodları dosyaya kaydettirip IO işlemi gerçekleştiriyorsun.Direk memoya yazdır :F