Помощь - Поиск - Пользователи - Календарь
Полная версия: Запуск не .exe и вопрос по папкам
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Free Pascal, Pascal ABC и другие
suriv
я короче почти хочу прогу сделать:
1)типа в данной директории показываются все файлы.
так вот когда я хочу чтоб запустился не .exe а ini,txt,etc.... то как сделать чтоб эти фалы открывались блокнтом huh.gif
ну типа sorry за глупый вопрос?
я имею ввиду что-то вроде exec(noterepad,'***.txt');
можно сделать что-то вроде етого ?
2)выводится список всего что есть в папке как определить это папка или нет ?
volvo
Это тебе в Дельфи или 32-битные компиляторы надо smile.gif Скажи, куда перенести...
Для Дельфи это рассматривалось здесь: Запуск файла
suriv
в 32битные smile.gif
(fpc)
suriv
всё на первый вопрос я сам ответил =)
exec('noterepad',файл);


2)так как же всё таки узнать данный файл является папкой или нет ? (если папка то я её открываю если нет то запускаю файл)
volvo
Цитата(suriv @ 21.05.05 21:20)
выводится список всего что есть в папке

Каким образом ты это выводишь?
Дож
Цитата
Каким образом ты это выводишь?

Есть в паскале какая-то процедурка...
suriv
finfdfirst & findnext
массив из строк каждому элементу присвается путь.....
выводится список в данной папке файлы пронумерованы
вводишь число и открывается файл:
1)если ехе то запустить
2)если нет то блокнотом открыть (тхт,ini....)
3)если папка то сделать ее текущей и в ней вывести список файлов
так как узнать является файл папкой или файлом ?
volvo
2 пути:
1) не очень хорошо, но будет работать без переделывания программы - у тебя есть имя файла - делаешь на него еще раз FindFirst (ну или пишешь функцию, которая это сделает) со значением Attr = Directory. Если нет ошибки, то это была директория, если ошибка есть - то файл.
2) понадобится небольшое изменение программы: ты не пользуешься
Цитата
массив из строк каждому элементу присвается путь
, а пользуешься массивом вот таких элементов:
type tinfo = record
myPath: String; { здесь по-прежнему путь }
isFolder: Boolean; { здесь - True если папка, False иначе }
end;

и после FindFirst/FindNext кроме занесения пути в массив еще заносишь является ли файл папкой (анализируешь тот же Attr)
suriv
я пошол дргим путем (третьим :D )
выложу.....

тока вот проблема:
если bmp,gif,jpeg то делать тто
если txt,ini,pas то делать то

но хз как.
тока если 1условие- если bmp то делать то
как сделать чтоб "несколько" было ? sad.gif
volvo
Цитата(suriv @ 29.05.05 2:31)
если bmp,gif,jpeg то делать тто
если txt,ini,pas то делать то

Правда? А что, папка не может называться EXAMPLE.PAS, например?
suriv
может smile.gif но пусть так будет.....
так как это реализовать ?
а ? :low:
volvo
Что именно ты хочешь чтоб тебе сказали?
extension := ... { выделяешь расширение из имени файла }
if (extension = 'bmp') or (extension = 'gif') or (extension = 'jpg') then ...

Это?
suriv
да.
недодумался а я писал if extension='bmp' or if extension='gif'...... :D lol.gif
спасибо smile.gif
suriv
вот короче пока еще не доделал что хотел.... но уже запутался... :p2:
Вылетает.... поправтье если что не так....

uses crt,dos;
var
fs:array[1..256]of string;
dir:searchrec;
i,c:byte;
s2,pap,pp,f,nf:string;
t:text;
procedure nef;
begin
clrscr;
write('FileName: ');
readln(f);
nf:=pap+'\'+f;
assign(t,f);
rewrite(t);
end;
begin
repeat
i:=0;
clrscr;
getdir(0,pap);
pp:=pap+'\';
findfirst(pp+'*.*',anyfile,dir);
while doserror=0 do
begin
inc(i);
fs[i]:=dir.name;
writeln(i,') ',dir.name);
findnext(dir);
end;
readln(f);
if f='n' then nef;
val(f,c);
s2:=copy(fs[c],length(fs[c])-2,3);
if (s2='wav') or (s2='mp3') then exec('wmplayer',fs[c]);
if (s2='bmp') or (s2='jpg') or (s2='gif') then exec('mspaint',fs[c]);
if (s2='txt') or (s2='ini') or (s2='pas') or (s2='bak') then exec('notepad',fs[c]);
if s2='exe' then exec(fs[c],'')
else chdir(fs[c]);
until false;
readln;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.