Pytanie dotyczące Temporary Internet Files.

0

Witam wszystkich!
Podczas pisania aplikacji natrafiłem na kilka problemów, chciałbym prosić o Waszą pomoc. Całość przedstawię w punktach.

  1. W jaki sposób mogę wyświetlić grafikę (format .jpg) w komponencie TImage, której źródło znajduje się w folderze Temporary Internet Files, biorąc pod uwagę, że każdy użytkownik będzie miał inną ścieżkę do folderu Temporary? Wyczytałem o następującym kodzie, ale nie jestem pewien jak go użyć.

%LOCALAPPDATA%\Microsoft\Windows\Temporary Internet Files

  1. Czy istnieje możliwość rozpoznania pliku po jego "nazwie z pamięci podręcznej" (dla ciekawskich, PPM na dowolnym elemencie w Temporary Internet Files, a następnie Właściwości) ?

Z góry dziękuję za pomoc. Pozdrawiam

0

Widziałem ten temat już wcześniej, ale nie wiem jak zastosować przedstawione rozwiązanie w komponencie Image. Mógłby mi ktoś pomóc?

Edit: Inaczej, wiem jak wyświetlić obraz, nie wiem jak użyć opisanego rozwiązania... Oto mój kod:

Image1.Picture.LoadFromFile('ścieżka do pliku');
Image1.Show;

Proszę o pomoc.

0

A masz konkretną nazwę pliku ?
Jeżeli nie, to poczytaj dodatkowo o FindFirst

0

@Patryk27: Tak, jego nazwa (bynajmniej tak to wygląda po przekopiowaniu elementu na pulpit) to "image.jpg". W takim razie w jaki sposób mam podać ścieżkę do pliku?

0

Brak samodzielności niektótych jest dla mnie wręcz przerażający. Masz, a i tak się nic nie nauczysz ;/

//...
uses
  JPEG, ShlObj;

function GetSpecialFolderPath(const Folder : integer) : string;
var
  Path : array[0..MAX_PATH] of Char;
begin
  SHGetSpecialFolderPath(0, Path, Folder, False);
  Result := Path;
end;

procedure TForm1.FormCreate(Sender : TObject);
var
  APath, AFileName : string;
begin
  AFileName := 'image.jpg';
  APath := GetSpecialFolderPath(CSIDL_INTERNET_CACHE);
  if APath <> '' then
  begin
    if Apath[Length(APath)] <> '\' then
    begin
      APath := APath + '\';
    end;
    if FileExists(APath + AFileName) then
    begin
      Image1.Picture.LoadFromFile(APath + AFileName);
    end;
  end;
end;

P.S. I tradycyjnie już umieszczam uważane za zbędne przez wielu begin end przy wykonywaniu po
instrukcji warunkowej pojedynczego polecenia. Ale ja zawsze tak robię, bo łatwiej jest pózniej jesli
zajdzie taka potrzeba coś dopisać i nie przeformatowywać kodu, a poza tym ucinam mam nadzieję
kolejne sto pytan do jeżeli pytający zechce dopisać inne poleceania i to Image1.Show jest zbędne.

0

@olesio: Nie chcę iść na łatwiznę, po prostu praktycznie nie piszę w Delphi, moja wiedza w zakresie tego języka jest naprawdę uboga, a jestem zmuszony użycia akurat tego języka. Dziękuję serdecznie za pomoc, przepraszam za kłopot. Dobrze, że można jeszcze liczyć na życzliwych ludzi z tego forum. Jeszcze raz dziękuję, pozdrawiam!

0

Przepraszam, że dubluję, jednakże nie wszystko jest tak jak powinno :/. Program nadal nie wyświetla obrazka, choć istnieje on w moim Temporary Internet Files. Użyłem dokładnie takiego kodu jak podałeś, na formie mam tylko komponent Image1. Sam nie wiem co jest nie tak... Poniżej kod:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, JPEG, ShlObj;

type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function GetSpecialFolderPath(const Folder : integer) : string;
var
  Path : array[0..MAX_PATH] of Char;
begin
  SHGetSpecialFolderPath(0, Path, Folder, False);
  Result := Path;
end;

procedure TForm1.FormCreate(Sender : TObject);
var
  APath, AFileName : string;
begin
  AFileNAme := 'image.jpg';
  APath := GetSpecialFolderPath(CSIDL_INTERNET_CACHE);
  if APath <> '' then
  begin
    if Apath[Length(APath)] <> '\' then
    begin
      APath := APath + '\';
    end;
    if FileExists(APath + AFileName) then
    begin
      Image1.Picture.LoadFromFile(APath + AFileName);
    end;
  end;
end;

end.

Przepraszam, widocznie życie lubi sprawiać mi ciągłe problemy...

0

sprawdź: AFileNAme := 'image.jpg'; [!!!]

0

Kod jak zawsze ode mnie był testowany pod Delphi po wrzuceniu obrazka
do wcześniej sprawdzonej śćiezki którą sobie wyświetliłem, na Captionie
formatki, a na ów formatece też miałem tylko Image i wszystko działa.

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