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?
Antwort
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
.
danke. Ich werde es überprüfen und Sie informieren. – Armin
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).
Ich habe diesen Mechanismus nie benutzt und weiß nicht, was ich tun muss. Kannst du bitte mehr beschreiben oder ein Beispiel geben? – Armin
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;
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). –