Mit Lazarus ins Internet gehen und Textdateien herunterladen
-
- Beiträge: 25
- Registriert: Mi 12. Sep 2007, 19:28
Mit Lazarus ins Internet gehen und Textdateien herunterladen
Ich möchte gerne mit Lazarus ins Internet gehen und dort eine Textdatei herunterladen. Leider weiß ich überhaupt nicht, wie das geht. Ich habe zwar Erfahrungen mit Pascal und konnte mir auch ein zufriedenstellend funktionierendes Programm schreiben, aber für volle Funktionalität muss ich (Text-)Dateien downloaden können, deren URL bekannt ist. Gibt es dafür einen sehr einfachen Weg?
Zuerst mal muss du wissen, um welches Protokoll es sich handelt.
HTTP, FTP .. ?
Dann kannst du z.B. von Synapse http://synapse.ararat.cz/ die entsprechende Klasse verwenden.
HTTP, FTP .. ?
Dann kannst du z.B. von Synapse http://synapse.ararat.cz/ die entsprechende Klasse verwenden.
-
- Beiträge: 25
- Registriert: Mi 12. Sep 2007, 19:28
Wenn du wirklich nur eine Datei downloaden willst, geht's ganz einfach mit Synapse:
unit httpsend in die Uses nehmen und HttpGetText(..) verwenden.
http://synapse.ararat.cz/docs/help/httpsend.html
unit httpsend in die Uses nehmen und HttpGetText(..) verwenden.
http://synapse.ararat.cz/docs/help/httpsend.html
-
- Beiträge: 25
- Registriert: Mi 12. Sep 2007, 19:28
Danke - gerade in diesem Moment war ich auf der Hilfeseite und nur noch einen Klick entfernt.
Das hört sich alles sehr gut an. Vielleicht klappt die Umsetzung schneller, als ich mir erhofft hatte.
Bevor ich dieses Forum gefunden habe, hatte ich schon die Geduld verloren, weil man in den Hilfeseiten von FPC und überhaupt im Internet zur Internetprogrammierung so gut wie gar nichts findet, wenn man nicht gerade schon ein Profi ist und weiß, wo man zu suchen hat.
Das hört sich alles sehr gut an. Vielleicht klappt die Umsetzung schneller, als ich mir erhofft hatte.
Bevor ich dieses Forum gefunden habe, hatte ich schon die Geduld verloren, weil man in den Hilfeseiten von FPC und überhaupt im Internet zur Internetprogrammierung so gut wie gar nichts findet, wenn man nicht gerade schon ein Profi ist und weiß, wo man zu suchen hat.
-
- Beiträge: 25
- Registriert: Mi 12. Sep 2007, 19:28
Gustav Gans hat geschrieben:Nach einigen Hürden funktioniert es jetzt. Ich verstehe nur nicht, warum die Funktion als Ausgabevariable TStrings hat, es aber mit TStrings nicht klappt (Laufzeitfehler 217). Nach ein wenig Herumprobieren habe ich festgestellt, dass es stattdessen mit TStringList geht.
TString ist eine abstrakte Basisklasse, die nicht selber instantiiert werden kann.
Du hättest aber auch nur z.B. Memo1.Lines als Parameter übergeben können.
HttpGetText(URL, Memo1.Lines)
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
theo hat geschrieben: TString ist eine abstrakte Basisklasse, die nicht selber instantiiert werden kann.
Ich habe mich immer schon gewundert, warum bei völlig abstarkte Klassen wie TStrings ein "create" überhaupt geht. Am besten wäre es, wenn TStrings.create gar nicht compilierbar wäre ("create" private in TStrings und erst public in z.B. TStringList). Weniger schön aber immer noch besser als die aktuelle Implementierung wäre, wenn schon ein create auf die abstrakte Klasse zu einer (dann verstehbaren) Exception führen würde und nicht erst der Aufruf einer Funktion.
-Michael
@mschnell: Ich weiss schon was du meinst.
Aber erstens kann man Create nicht "verstecken". Das ist bereits in TObject "public" und das kann man nicht auf ein tieferes Sichtbarkeitslevel setzen.
Zweitens gibt es das Konzept "abstrakte Basisklasse" für den Compiler eigentlich nicht. Das ist eine normale Klasse, welche "zufällig" eine oder mehrere abstrakte Methoden hat.
Da müsste man imo schon ein neues Sprachkonstrukt einführen, um eine solche Klasse als "unbrauchbar" zu "markieren".
a la TMyClass = abstract class(TObject) oder so.
Aber eine Warnung wird ja ausgegeben:
unit1.pas(33,21) Warning: Constructing a class "TStrings" with abstract methods
Aber erstens kann man Create nicht "verstecken". Das ist bereits in TObject "public" und das kann man nicht auf ein tieferes Sichtbarkeitslevel setzen.
Zweitens gibt es das Konzept "abstrakte Basisklasse" für den Compiler eigentlich nicht. Das ist eine normale Klasse, welche "zufällig" eine oder mehrere abstrakte Methoden hat.
Da müsste man imo schon ein neues Sprachkonstrukt einführen, um eine solche Klasse als "unbrauchbar" zu "markieren".
a la TMyClass = abstract class(TObject) oder so.
Aber eine Warnung wird ja ausgegeben:
unit1.pas(33,21) Warning: Constructing a class "TStrings" with abstract methods
-
- Beiträge: 423
- Registriert: Di 5. Feb 2008, 12:45
- OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
- CPU-Target: 64Bit
- Kontaktdaten:
hmmm also sicherlich besteht das Problem nicht mehr, aber zur vollständigkeit:
Code: Alles auswählen
procedure TForm2.BCheckUpdateClick(Sender: TObject);
var t:Tstringlist;
begin
with THTTPSend.Create do
begin
if HTTPMethod('GET','dein link.txt') then
try
t:= TStringList.Create;
t.LoadFromStream(Document);
//mache hier etwas
t.Free;
except
Application.MessageBox('Ein Fehler ist aufgetreten','Fehler', 0);
end;
Free;
end;
end;
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu
www.alexanderroth.eu
Re: Mit Lazarus ins Internet gehen und Textdateien herunterladen
Hallo!
Ich habe eine Frage zur Synapse-Installation. Ich habe noch nie zusätzliche Units installiert, wie binde ich das Synapse-Paket dauerhaft in Lazarus ein?
Gruß
Leif
Ich habe eine Frage zur Synapse-Installation. Ich habe noch nie zusätzliche Units installiert, wie binde ich das Synapse-Paket dauerhaft in Lazarus ein?
Gruß
Leif
-
- Beiträge: 957
- Registriert: Mo 11. Sep 2006, 22:56
Re: Mit Lazarus ins Internet gehen und Textdateien herunterladen
Wie dauerhaft in Lazarus?
Synapse ist keine visuelle Komponente also reicht eigentlich für dein Programm:
in uses eintragen und bei Compilereinstellungen-andere Unit Dateien
den Pfad zu Synapse setzen
alternativ zu Synapse kannst du dir im fpc Verzeichnis
fpcsrc/packages/libcurl/tests
mal ansehen
Synapse ist keine visuelle Komponente also reicht eigentlich für dein Programm:
in uses eintragen und bei Compilereinstellungen-andere Unit Dateien
den Pfad zu Synapse setzen
alternativ zu Synapse kannst du dir im fpc Verzeichnis
fpcsrc/packages/libcurl/tests
mal ansehen