Ext:=AnsiUpperCase(ExtractFileExt(Pliki.FileName));

0

witam..

mialem do napisanie programik (katalog)

jeszcze zostala mi ostatnia rzecz do zrobienia ale mimo iz mam czas ograniczony wiec pisze na forum a mianowicie mam takie cos jeszcze do zrobienia

Wprowadź do listy rozszerzeń pozycję Wszystkie pliki (.) i zabezpiecz program przed próbą uruchomienia pokazu niedopuszczalnych plików (spoza dotychczasowej listy). Podpowiedź: Rozszerzenie otwieranego pliku można poznać np. za pomocą kodu
Ext:=AnsiUpperCase(ExtractFileExt(Pliki.FileName));
gdzie
ExtractFileExt - pobiera rozszerzenie z nazwy pliku
AnsiUpperCase - zamienia tekst będący argumentem funkcji na analogiczny tekst z tym, że pisany wielkimi literami
Ext - jest zdefiniowaną wcześniej zmienną typu łańcuchowego.
Po odczytaniu rozszerzenia podjętą akcję możemy uzależnić od typu pliku
if (Ext='.WAV') or (Ext='.MID') or (Ext='.AVI') then
a podjęte akcje są takie jek dla przycisku Pokaz/Zagraj (oczywiście dla wersji pokaż należy podać odpowiedni zestaw rozszerzeń)

i pogubilem sie z tym zapisem ; Ext:=AnsiUpperCase(ExtractFileExt(Pliki.FileName));

bez niego wiedzial bym jak to zapisac,,ale musze go wykorzystac i po prostu nie mam pojecia jak;/
wiec prosze was o pomoc..

1

To chyba tak, jak rozumiem jest przycisk Pokaż/Zagraj i po jego naciśnięciu powinna być procedura:

Ext:=AnsiUpperCase(ExtractFileExt(Pliki.FileName));
If (Ext='.WAV') or (Ext='.MID') then //... (Tu procedura Zagraj)
If (Ext='.AVI') or (Ext='.MPG') then // ... ( a tu procedura pokaż)
0

thx
mam teraz takie cos;p...i mam maly problem;/...nie wiem w jak najprostrzy sposob wladowac ta [7] do procedury pokazclick...aha i jeszcze jedno jak wpisalem np [0..1,7] i [2..6,7] to po tym jak uruchomie program i chce otworzyc plik z rozszerzeniem .bmp wyswietla mi sie blad;/

 procedure TForm1.RozszerzeniaChange(Sender: TObject);
var
Ext: String;
begin
If Rozszerzenia.ItemIndex in [0..1] then Pokaz.Caption:='Zagraj';
If Rozszerzenia.ItemIndex in [2..6] then Pokaz.Caption:='Pokaz';
If Rozszerzenia.ItemIndex in [7] then
Ext:=AnsiUpperCase(ExtractFileExt(Pliki.FileName));
if (Ext='.WAV') or (Ext='.MID') then Pokaz.Caption:='Zagraj';
if (Ext='.AVI') or (Ext='.BMP') or (Ext='.ICO') or (Ext='.WMF') or (Ext='.EMF') then Pokaz.Caption:='Pokaz';
end;


procedure TForm1.PokazClick(Sender: TObject);
begin
if(Pliki.Filename<>'') and (Rozszerzenia.ItemIndex in [0..2]) Then
 Begin
    Multimedia.FileName:=Pliki.FileName;
    Multimedia.Open;
    Multimedia.Play
 End;
if(Pliki.Filename<>'') and (Rozszerzenia.ItemIndex in [3..6]) Then
 Begin
  Form2.Image1.Picture.LoadFromFile(Pliki.FileName);
  Form2.Caption:=Pliki.FileName;
  Form2.Show
 End;
end;
0

Dlaczego w procedurze Rozszerzenia masz itemindex[0..1] i [2..6] a w pokazClick [0..2] i [3..6]?

0

wiec nikt nie wie??;p

da sie to wladowac do prodedury pokaz click w jakiz latwy szybki sposob aby program dzialal poprawnie??

czy musze pisac oddzielna procedurke dla [7]

0

ehh widze ze nie ma chetnych;p

z tego zastoju napisalem sam ale za to wydluzona procedure...

czy wie ktos jak by to skrocic?? czy tak jak jest juz zostawic???

 procedure TForm1.RozszerzeniaChange(Sender: TObject);
var
Ext: String;
begin
If Rozszerzenia.ItemIndex in [0..1] then Pokaz.Caption:='Zagraj';
If Rozszerzenia.ItemIndex in [2..6] then Pokaz.Caption:='Pokaz';
Ext:=AnsiUpperCase(ExtractFileExt(Pliki.FileName));
If Rozszerzenia.ItemIndex in [7] then
begin
if (Ext='.WAV') or (Ext='.MID') then Pokaz.Caption:='Zagraj';
if (Ext='.AVI') or (Ext='.BMP') or (Ext='.ICO') or (Ext='.WMF') or (Ext='.EMF') then Pokaz.Caption:='Pokaz';
end
end;


procedure TForm1.PokazClick(Sender: TObject);
var
Ext: string;
begin
if(Pliki.Filename<>'') and (Rozszerzenia.ItemIndex in [0..2]) Then
 Begin
    Multimedia.FileName:=Pliki.FileName;
    Multimedia.Open;
    Multimedia.Play
 End;

if(Pliki.Filename<>'') and (Rozszerzenia.ItemIndex in [3..6]) Then
 Begin
  Form2.Image1.Picture.LoadFromFile(Pliki.FileName);
  Form2.Caption:=Pliki.FileName;
  Form2.Show
 End;

if(Pliki.Filename<>'') and  (Rozszerzenia.ItemIndex in [7])then
Ext:=AnsiUpperCase(ExtractFileExt(Pliki.FileName));
 if (Ext='.WAV') or (Ext='.MID') then
 begin
 Multimedia.FileName:=Pliki.FileName;
 Multimedia.Open;
 Multimedia.Play
 end;
 if (Ext='.AVI') or (Ext='.BMP') or (Ext='.ICO') or (Ext='.WMF') or (Ext='.EMF') then
 begin
 Form2.Image1.Picture.LoadFromFile(Pliki.FileName);
 Form2.Caption:=Pliki.FileName;
 Form2.Show
 end
end;
0

Dziwnie to robisz ;s

Podczas wybierania pliku, powinieneś sprawdzać jego rozszerzenie i jakoś je oznaczyć, najlepiej w zmiennej prywatnej (sekcja private), typu Byte i np.

0 - złe roszerzenie, pojawia się komunikat o błędnym formacie pliku,
1 - roszerzenie pliku z dźwiękiem, muzyką - odtwarzasz,
2 - obrazki - pokazujesz.

Nastepnie w przycisku lub inaczej, od razu po ustaleniu tego wybierasz co powinien zrobić program (od tego masz tą zmienną Byte i case).

if (Pliki.Filename <> '') and ...

Ten warunek rozłoży spacja, lepiej daj:

if not (Trim(Pliki.FileName = '')) and ...

Popracuj nad wcięciami, dla czytelności (to Ci pomoże ;)).

0

thx wiem o co chodzi

ale musze to przedstawic w takiej formie;p

i wiec moze wiesz czy ta [7] czyli te rozszerzenie . da sie jakos wpakowac do tej procedury pokazclick np [0..2,7] oraz [3..6,7] ale wtedy nie wiem jak zmienic ja w procedurze z rozszerzeniami;p..albo czy gdzie co zmieniac;D

1
procedure TForm1.PokazClick(Sender: TObject);
   procedure PlayFile;
   Begin
      Multimedia.FileName:=Pliki.FileName;
      Multimedia.Open;
      Multimedia.Play
   End;
   procedure ShowFile;
   Begin
    Form2.Image1.Picture.LoadFromFile(Pliki.FileName);
    Form2.Caption:=Pliki.FileName;
    Form2.Show
   End;
var
  Ext: string;
begin
  if Pliki.Filename='' then exit;
  case Rozszerzenia.ItemIndex of
    0..2 : PlayFile;
    3..6 : ShowFile;
    else   begin
              Ext:=AnsiUpperCase(ExtractFileExt(Pliki.FileName));
	       if (Ext='.WAV') or (Ext='.MID') then PlayFile
               else if (Ext='.AVI') or (Ext='.BMP') or (Ext='.ICO') or (Ext='.WMF') or (Ext='.EMF')
	         then ShowFile;
	   end;
  end;
end;

a tak w ogóle to przecież nie trzeba sprawdzać Rozszerzenia.ItemIndex, tylko od razu wyciągać Ext i na tej wyłącznie podstawie decydować co dalej.
Czyli:

procedure TForm1.PokazClick(Sender: TObject);
var
  Ext: string;
begin
  if Pliki.Filename='' then exit;
  Ext:=AnsiUpperCase(ExtractFileExt(Pliki.FileName));
  if (Ext='.WAV') or (Ext='.MID') then
  Begin
     Multimedia.FileName:=Pliki.FileName;
     Multimedia.Open;
     Multimedia.Play
  End
  else if (Ext='.AVI') or (Ext='.BMP') or (Ext='.ICO') or (Ext='.WMF') or (Ext='.EMF')
  Begin
    Form2.Image1.Picture.LoadFromFile(Pliki.FileName);
    Form2.Caption:=Pliki.FileName;
    Form2.Show
  End;
end;
0

wielkie thx juz rozumiem o co chodzi;p
i thx wszystkim za poswiecony czas;)

  • ode mnie;p

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