Użycie obrazka zastępczego zamiast komunikatu błędu

0

Witam.

Potrzebuje pomocy w małej przeróbce.

raise exception.create('Error loading jpg file ' + ' ' + e.Message);

Zamiast okienka message zastępczy obrazek który będzie się znajdował w folderze z programem lub jeśli to możliwe folder głębiej np. w folderze Picture

0

Pokaż cały fragment z podaną linijką oraz napisz sensownie co z tym obrazkiem ma być zrobione.

0

Ma się wyświetlić zamiast komunikatu gdy nie ma obrazka w komponencie TImage

function showpicture(aImage: timage; APath: string): string;
begin
  result := imgOK;
  try
    aImage.picture.loadfromfile(APath);
  except
    on e: exception do
      raise exception.create('Error loading jpg file ' + ' ' + e.Message);
  end;
end;

odwołanie do funkcji:

res := showpicture(self.Image1, tmpWord.grafika);

0
function showpicture(aImage: timage; APath: string): string;
begin
  result := imgOK;
  try
    aImage.picture.loadfromfile(APath);
  except
    aImage.picture.loadfromfile('Picture\zastępczy obrazek.png');
  end;
end;

Jak obrazka zastępczego nie będzie na dysku to i tak poleci wyjątek.

1
function showpicture(aImage: timage; APath: string): string;
begin
  result := imgOK;
  if not FileExists(APath) then
    APath := 'Picture\zastępczy obrazek.png';
  try
    aImage.picture.loadfromfile(APath);
  except
    raise Exception.Create('Jakaś dupa się stała');
  end;
end;

używanie wyjątków do sprawdzania czy plik istnieje to zły pomysł

0

Racja @abrakadaber - FileExists jest w tym przypadku lepszym rozwiązaniem;

Przy okazji - ShowPicture nie powinien być funkcją, skoro zawsze zwraca tę samą wartość.

0

Cześć wybaczcie mi że wracam do tematu.
funkcja działa jak najbardziej ale w jednym wypadku nie.

procedure TForm2.ListBoxJPEGClick(Sender: TObject);
begin
 LabeledEditJPEG.Text := ListBoxJPEG.Items[ListBoxJPEG.ItemIndex];
 showpicture(self.Image1, (extractfilename(ListBoxJPEG.Items[ListBoxJPEG.ItemIndex])));
end;

Mam problem bo nie raz muszę dodać puste indeksy bo nie wszędzie mam grafiki.
i jak kliknę na pusty indeks ok
ale jak tylko dodam jakiś plik z grafiką:
1:[pusty indeks]
2:plik.jpg

Plik jpg się otwiera jest ok
Ale gdy ponownie kliknę na pusty indeks to jakoś przechwytuje ścieżkę z pliku jpg
wywala komunikat system nie może odnaleźć określonej ścieżki
dodatkowo widać w komunikacie: że do ścieżki pliku jpg dopisuje jeszcze \Picture\zastępczy obrazek.png
ścieżka do pliku\Picture\zastępczy obrazek.png.

Dlaczego przechwytuje ścieżkę z pliku jpg zamiast wyświetlić po prostu zastępczy obrazek gdy klikamy w pusty indeks

Nawet jak w drugim Listboxie mam pliki mp3 to przechwyci mi z nich ścieżkę jak tylko jakiś dodam.
Ale tak tylko się dzieje jak klikam w pusty indeks a mam już dodany jakiś plik ze ścieżką.
Bo normalnie działa prawidłowo.

function showpicture(aImage: timage; APath: string): string;
begin
  result := imgOK;
  if not FileExists(APath) then
    APath := 'Picture\zastępczy obrazek.png';
  try
    aImage.picture.loadfromfile(APath);
  except
    raise Exception.Create('Jakaś dupa się stała');
  end;
end;

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