![]() |
.txt dateien Online auslesen
Hallo,
Also ich bin auf folgendes problem gestoßen; Habe mein Program so aufgebaut, das es aus einer Text datei die sich auf einem server befinded entweder eine 0 oder eine 1 ausliest, mehr beinhalted die txt auch nicht, da sie den serverstatus anzeigen soll. Ich hab das jetzt so gemacht, das ich die txt downloade und sie dann local öffne und auslese; Wenn ich diese Procedure jetzt aber wärend der laufzeit wiederhohle, scheint das tool obwohl ich die datei jedesmal wieder lösche, die datei nicht erneut downzuloaden, sonder hohlt sie sonst woher, ich weiß jetzt nicht ob die von windows temporär gespeichert wird oder wieso die nicht neu gedownloaded wird. Demnach wollt ich wissen wie man eine text datei direkt vom sever laden kann, und dann den inhalt feststellen kann; wäre dankbar für tipps oder lösungen. mfg ~.echo |
Re: .txt dateien Online auslesen
Wie lädst du diese? U.U. wird nämlich geprüft ob einen neue vorliegt, und wenn nicht aus dem Cache geladen.
|
Re: .txt dateien Online auslesen
Danke erstmal für die schnelle antwort.
Hmm, also muss ich die irgendwie vorher rüberprüfen ob ne neue vorliegt, aber die größe der datei ändert sich auf dem server ja nicht ist ja entweder ne 1 oder ne 0, oder wird dort der inhalt, bzw, änderungsdatum überprüft? Also laden tue ich die mit dieser function:
Delphi-Quellcode:
Also diese hab ich nicht selbst geschrieben, da das niocht die hauptaufgabe von meinem Program ist, und ich mir die arbeit ersparen wollte, war vielleicht mein fehler;
function GetInetFile
(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; Edit: Also, am liebsten würde ich die file garnicht erst local speichern, so wie ich das bei xml mache; Also wenn du dafür auch einen vorschlag hättest, immer gerne; |
Re: .txt dateien Online auslesen
eine paar infos mal zur lokalen version (ich hoff ich habs noch richtig im kopf ^^)
ersetz mal
Delphi-Quellcode:
durch
Rewrite(f,1);
Delphi-Quellcode:
und
Reset(f);
Delphi-Quellcode:
durch
InternetReadFile(hURL, @Buffer,
SizeOf(Buffer), BufferLen);
Delphi-Quellcode:
ReadLn(f, sRow); // kann aber auch Readln(sRow, f) heißen
|
Re: .txt dateien Online auslesen
Danke erstmal,
jedoch sagt Delphi mir bei sRow Undeclared identifier Müsst ich da noch eine weitere unit einbinden? |
Re: .txt dateien Online auslesen
Hi,
@Andidreas: Na na, das wird dann aber nix. Er liest ja via InternetReadfile und schreibt lokal. Das ist schon richtig so. Aber: Bei dem Open der Session kann man noch ein paar Flags angeben. Must mal in die Hilfe dazu schauen. Und eins dieser Flags müsste sein, dass die Datei nicht gecached werden darf. Gruss Thomas. |
Re: .txt dateien Online auslesen
Danke erstmal,
Nunja, hab bisher die lösung noch nicht, jedoch kenne mich mit InternetReadfile nicht aus, demnach kann ich die procedur so abändern, dass der inhalt der datei in eine globale string variable gelesen werden kann anstatt diesen in einer datei abzulegen? |
Re: .txt dateien Online auslesen
Wieso nimmst du nicht den HTTP-client von den Indys, da musst du nur stringVar := idHTTP1.Get('http://xxx.de/x.txt'); machen...
|
Re: .txt dateien Online auslesen
Hmm auch ne möglichkeit, habs jetz mit dem tipp von thkerkmann gelöst;
Musste nur die flag hinzufügen;
Delphi-Quellcode:
Also danke für die tipps; Ich denke mal es geht jetzt;
hURL := InternetOpenURL(hSession,
PChar(fileURL), nil,0,INTERNET_FLAG_DONT_CACHE,0);
Delphi-Quellcode:
Wird das gecached?
stringVar := idHTTP1.Get('http://xxx.de/x.txt');
|
Re: .txt dateien Online auslesen
@.echo
sry hatte vergessen dazu zu schreiben das srow eine string variable ist die du in deiner prozedur/funktion deklarieren musst! [quote="thkerkmann"]@Andidreas: Na na, das wird dann aber nix. Er liest ja via InternetReadfile und schreibt lokal. Das ist schon richtig so. quote] naja er hat geschrieben: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz