Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi .txt dateien Online auslesen (https://www.delphipraxis.net/78418-txt-dateien-online-auslesen.html)

.echo 4. Okt 2006 17:44


.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

mkinzler 4. Okt 2006 17:46

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.

.echo 4. Okt 2006 18:04

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:
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;
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;


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;

Andidreas 4. Okt 2006 18:26

Re: .txt dateien Online auslesen
 
eine paar infos mal zur lokalen version (ich hoff ich habs noch richtig im kopf ^^)

ersetz mal
Delphi-Quellcode:
Rewrite(f,1);
durch
Delphi-Quellcode:
Reset(f);
und

Delphi-Quellcode:
InternetReadFile(hURL, @Buffer,
                     SizeOf(Buffer), BufferLen);
durch
Delphi-Quellcode:
ReadLn(f, sRow); // kann aber auch Readln(sRow, f) heißen

.echo 4. Okt 2006 18:31

Re: .txt dateien Online auslesen
 
Danke erstmal,
jedoch sagt Delphi mir bei
sRow
Undeclared identifier
Müsst ich da noch eine weitere unit einbinden?

thkerkmann 4. Okt 2006 18:34

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.

.echo 4. Okt 2006 18:49

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?

WordsBG 4. Okt 2006 19:27

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...

.echo 4. Okt 2006 19:36

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:
hURL := InternetOpenURL(hSession,
            PChar(fileURL),
            nil,0,INTERNET_FLAG_DONT_CACHE,0);
Also danke für die tipps; Ich denke mal es geht jetzt;


Delphi-Quellcode:
stringVar := idHTTP1.Get('http://xxx.de/x.txt');
Wird das gecached?

Andidreas 5. Okt 2006 06:25

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:

Zitat von .echo
das ich die txt downloade und sie dann local öffne und auslese;

wenn das so stimmt, dann sind meine befehle wohl glaub doch nicht so falsch ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz