Jak użyć Memo.Lines.SaveToFile pod Androidem?

Odpowiedz Nowy wątek
2017-11-11 13:31
0

Witam . Mam taki problem próbuje użyć czegoś takiego ale pod androidem, jak użyć czegoś takiego

memo1.Lines.SaveToFile('c:\test.txt')

Chodzi mi o to co w nawiasach . Dla win32 spowoduje ze plik test.txt zostanie zapisane na dysku c, a jak to ma być pod androidem . Próbowałem

memo1.Lines.SaveToFile('test.txt')

ale wywala błąd .

edytowany 2x, ostatnio: furious programming, 2017-11-11 19:37

Pozostało 580 znaków

2017-11-21 19:24
0

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.

edytowany 1x, ostatnio: Rabbit2, 2017-11-21 19:25

Pozostało 580 znaków

2017-11-21 19: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ą. Sprawdź to.


edytowany 1x, ostatnio: furious programming, 2017-11-21 19:46

Pozostało 580 znaków

2017-11-21 21:49
0

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

edytowany 1x, ostatnio: furious programming, 2017-11-21 21:58

Pozostało 580 znaków

2017-11-21 22:01
1

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


edytowany 4x, ostatnio: furious programming, 2017-11-22 04:09

Pozostało 580 znaków

2017-11-22 08:07
1

Przecież podałem co trzeba zrobić pod Windows DeleteUrlCacheEntry.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.

Pozostało 580 znaków

2017-11-22 15:26
0

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 .

edytowany 1x, ostatnio: furious programming, 2017-11-22 16:12

Pozostało 580 znaków

2017-11-22 16:21
1

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


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek, 2017-11-22 16:22

Pozostało 580 znaków

2017-11-22 21:08
0

Wisi na Uses .

screenshot-20171122200635.png

Pozostało 580 znaków

2017-11-22 21:14
1

Dwa razy masz przyłączony moduł WinInet – jeden bez przestrzeni, drugi jako Winapi.Wininet.


Pozostało 580 znaków

2017-11-22 21:17
0

wybacz . Ślepota już mnie chyba ogarnia . A wertowałem to kilka razy ,, ehh

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: CCBot