2011-01-03 5 views
2

Ich entwarf eine Website und ihre hochgeladen zum Server und funktioniert gut. Auf einer dieser Seiten bekomme ich Informationen von Benutzern wie ihre Adressen und ... und speichere sie in einer Textdatei. Kann ich eine Anwendung erstellen und ein Rich Edit oder Memo aus dieser Datei laden? Diese Datei hat selbst Adresse wie www.mysite.com/my_text_File.txt danke für Ihre Hilfe.Kann ich eine Memo- oder Rich-Edit-Datei aus einer Textdatei auf dem Server laden?

+0

Stellen Sie sicher, dass Ihre Textdateien nicht im Unicode-Format gespeichert sind (sollte kein Problem sein, da Sie die Kontrolle über sie haben, aber da Delphi 7 Unicode nicht unterstützt und das Web mehr und mehr Unicode wird) bevor Sie diesen Code außerhalb Ihrer eigenen Website verwenden). –

Antwort

3

Ja, Sie können.

function WebGetData(const UserAgent: string; const Server: string; const Resource: string): AnsiString; 
var 
    hInet: HINTERNET; 
    hURL: HINTERNET; 
    Buffer: array[0..1023] of AnsiChar; 
    i, BufferLen: cardinal; 
begin 
    result := ''; 
    hInet := InternetOpen(PChar(UserAgent), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); 
    try 
    hURL := InternetOpenUrl(hInet, PChar('http://' + Server + Resource), nil, 0, 0, 0); 
    try 
     repeat 
     InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen); 
     result := result + AnsiString(Buffer); 
     if BufferLen < SizeOf(Buffer) then 
      SetLength(result, length(result) + BufferLen - SizeOf(Buffer)); 
     until BufferLen = 0; 
    finally 
     InternetCloseHandle(hURL); 
    end; 
    finally 
    InternetCloseHandle(hInet); 
    end; 
end; 

procedure TForm1.FormClick(Sender: TObject); 
begin 
    Memo1.Text := WebGetData('My Application', 'www.rejbrand.se', ''); 
end; 

Beachten Sie, dass der obige Code nur mit ASCII-Text funktioniert. Um eine UTF-8-Lösung zu erhalten, ersetzen AnsiString mit string in der Signatur, und ersetzt die zweite Zeile in dem Block mit repeat

result := result + UTF8ToString(AnsiString(Buffer)); 

und optimiert die SetLength.

+0

danke. Ich werde es überprüfen und Sie informieren. – Armin

0

Sowohl TRichEdit als auch TMemo laden die Daten aus der Zeichenfolge, die Sie an sie übergeben haben. Was Sie also in Ihrer clientseitigen Anwendung tun müssen, ist das Herunterladen der Textdatei (wahrscheinlich mittels HTTP-Client, Indys eine ist eine der Optionen) und deren Inhalt an TRichEdit oder TMemo (über die Text-Eigenschaft in TMemo und entsprechende Mechanismen in TRichEdit).

+0

Ich habe diesen Mechanismus nie benutzt und weiß nicht, was ich tun muss. Kannst du bitte mehr beschreiben oder ein Beispiel geben? – Armin

3

Lassen Sie ein TMemo oder TRichedit auf das Formular Ihrer Anwendung fallen. Lassen Sie dann eine TidHTTP-Komponente aus den Indy-Komponenten fallen.

ein Onclick Schaltfläche Ereignis Ereignis hinzufügen und wie folgt vorgehen:

Verfahren TForm1.Button1Click (Sender: TObject);
beginne
memo1.lines.Text: = idHttp1.Get ('http://www.delphiprojectcode.com/test.txt');
Ende;

OR

procedure TForm1.Button1Click (Sender: TObject);
begin
richedit1.Text: = idHttp1.Get ('http://www.delphiprojectcode.com/test.txt');
Ende;