No właśnie ten problem dotyczy aplikacji pod win32, zapomniałem zaznaczyć to , przepraszam . Android wysyła gotowy plik.txt na ftp a na stacjonarnym inna aplikacja pobiera ten plik z serwera . jeszcze tylko z tym się uporam i chyba koniec będzie. Sprawdzę indy http , dzięki za podpowiedź.
- 1
- 2
- Rejestracja:ponad 7 lat
- Ostatnio:około 2 lata
- Lokalizacja:Będzin
- Postów:45
Dotyczy programu pod win32.
Witam . Wiec jest tak :
Var
ms:TMemoryStream;
begin
idhttp1.request.cachecontrol:='no-cache';
ms:=TMemoryStream.Create;
Idhttp1.get('http://xxx/tablica.txt',ms);
ms.SaveToFile('C:\xrapis\tablicamobilna.txt');
ms.Free;
idhttp1.Free;
end;
ale dalej 'pobiera' nieaktualny plik . Jak użyje IdFTP do pobierania to jest git , problem z tym ze na kompie gdzie program miał by działać jest zablokowany port ftp . Jedynie port www jest odblokowany . Jest szansa żeby to opanować , czy kombinować z dodawaniem np daty i godziny do nazwy pliku . Czy ma znaczenie jaka przeglądarka www jest zainstalowana na komputerze w związku z tym problemem.
- Rejestracja:ponad 7 lat
- Ostatnio:około 2 lata
- Lokalizacja:Będzin
- Postów:45
To wygląda tak, jakby ten plik tekstowy na serwerze był cache'owany, skoro przez WWW pobiera starą wersję, a przez FTP bieżącą
... chyba tak jest .po kilkudziesięciu minutach pobiera nowy plik na przeglądarce .Wiec po ludzku tego nie da sie zrobić . Myślę nad plikami z jakimiś znacznikami w nazwie np nazwa plików to liczby np od 0 do 100 coś 0.txt kolejny 1.txt itd im nowszy tym większa liczba . Później program do pobierania tych plików będzie pobierał np w pętli for i= 0 to 100, pliki od nazwy i.txt , aż któregoś nie znajdzie . Więc ostatni który był pobrany będzie najnowszym plikiem . Co jakiś czas idFTP usunie pliki z serwera i zacznie je wysyłać na serwer od nowa czyli 0.txt 1.txt itd . Troche pod górke ale nic innego mi nie przychodzi do głowy . Więc moje pytanie jest takie , jak obsłużyć coś takiego w idHTTP.get żeby przy braku pliku na serwerze nie krzyczał błędem tylko np jakieś false/true odczytać ..

- Rejestracja:ponad 13 lat
- Ostatnio:około 2 godziny
- Lokalizacja:Tuchów
- Postów:12167
No to masz dokładnie taką samą sytuację jak ja ze swoją stronką.
Wrzucam nowe pliki na serwer po FTP (głównie chodzi o pliki .css
), odświeżam stronę w przeglądarce i nie widzę zmian – cache przeglądarki nie jest temu winny. Cloudflare cache'uje te pliki, więc przeglądarka nie widzi zmian, natomiast z poziomu lokalnego menedżera plików operuję na najświeższych. Dopiero po jakimś czasie (z reguły jest to 40-60 minut) przeglądarka otrzymuje już te aktualne.
Sprawdź więc czy jakaś usługa cache'uje te pliki i jeśli tak to cóż… wyłącz tę usługę lub skonfiguruj. ;)
- Rejestracja:ponad 7 lat
- Ostatnio:około 2 lata
- Lokalizacja:Będzin
- Postów:45
Przecież podałem co trzeba zrobić pod Windows DeleteUrlCacheEntry
... sprawdziłem w pierwszej kolejności ,,,, nie pykło . Myślę ze ten plik nie jest przechowywany u mnie na kompie tylko gdzieś w sieci . Gdzieś czytałem ze tak robią dostawcy internetu żeby panować na przepustowością :) .Wyświetlałem go na przeglądarce w której wyczyściłem wszystkie pliki tymczasowe itp i dalej miałem stary plik dopiero po ok 30 minutach pojawił się nowy , i tak w kółko . Na razie całość testuje . Spróbuje ominąć to tak jak napisałem wcześnie // temat ze znacznikami w nazwach plików//, zobaczymy co z tego wyjdzie .
- Rejestracja:prawie 20 lat
- Ostatnio:minuta
- Lokalizacja:Gorlice
Spróbuj w takim razie na piechotę.
uses Winapi.Wininet;
procedure DownloadFile(AUrl, AFileName: string);
const
BUFFER_SIZE = 1024;
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0';
var
Buffer: array[1..BUFFER_SIZE] of Byte;
hInt, hURL: HINTERNET;
dwBytesRead: Dword;
fs: TFileStream;
begin
hInt:= InternetOpen(USER_AGENT, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if hInt <> nil then
begin
hURL:= InternetOpenURL(hInt, PChar(AUrl), nil, 0, INTERNET_FLAG_RELOAD, 0);
if hURL <> nil then
begin
fs:= TFileStream.Create(AFileName, fmCreate or fmOpenWrite);
repeat
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), dwBytesRead);
fs.WriteBuffer(Buffer, dwBytesRead);
until dwBytesRead = 0;
fs.Free;
InternetCloseHandle(hURL);
end;
InternetCloseHandle(hInt);
end;
end;
Flaga INTERNET_FLAG_RELOAD
powoduje, że nie powinno pobierać z cache jak to nie zadziała to już nie wiem :/
- Rejestracja:ponad 7 lat
- Ostatnio:około 2 lata
- Lokalizacja:Będzin
- Postów:45
Wisi na Uses .
- screenshot-20171122200635.png (93 KB) - ściągnięć: 149
- Rejestracja:ponad 7 lat
- Ostatnio:około 2 lata
- Lokalizacja:Będzin
- Postów:45
Witam ponownie . Program przeszedł fazę testów i aktualnie używany z powodzeniem ułatwiając życie wielu ludziom. Jeszcze raz dziękuje za pomoc . Choć pewnie nie raz jeszcze będę jej potrzebował w przyszłości . Pozdrawiam i jeszcze raz dziękuje .
- Rejestracja:ponad 7 lat
- Ostatnio:około 2 lata
- Lokalizacja:Będzin
- Postów:45
Witam po długiej przerwie . Pomocy . Czego tu nie ma >?., Zainstalowałem XE8 na nowym komputerze ,, przeniosłem ze starego cały folder C:\Users\Public\Documents\Embarcadero ale przy próbie odpalenia na androidzie aplikacji takie coś .Pod win 32 odpala ok .
temat dotyczy aplikacji z tego tematu ale trzeba było zrobić aktualizacje a tu zong . Czego brakuje i jak to doinstalować .gdzie szukać , Niby wszystko jest a jednak czegoś nie ma ,.
- screenshot-20190831001450.png (1 MB) - ściągnięć: 83
- 1
- 2