я короче почти хочу прогу сделать: 1)типа в данной директории показываются все файлы. так вот когда я хочу чтоб запустился не .exe а ini,txt,etc.... то как сделать чтоб эти фалы открывались блокнтом ну типа sorry за глупый вопрос? я имею ввиду что-то вроде exec(noterepad,'***.txt'); можно сделать что-то вроде етого ? 2)выводится список всего что есть в папке как определить это папка или нет ?
volvo
22.05.2005 2:38
Это тебе в Дельфи или 32-битные компиляторы надо Скажи, куда перенести... Для Дельфи это рассматривалось здесь: Запуск файла
suriv
22.05.2005 2:51
в 32битные (fpc)
suriv
22.05.2005 14:22
всё на первый вопрос я сам ответил =) exec('noterepad',файл);
2)так как же всё таки узнать данный файл является папкой или нет ? (если папка то я её открываю если нет то запускаю файл)
volvo
22.05.2005 14:35
Цитата(suriv @ 21.05.05 21:20)
выводится список всего что есть в папке
Каким образом ты это выводишь?
Дож
22.05.2005 15:11
Цитата
Каким образом ты это выводишь?
Есть в паскале какая-то процедурка...
suriv
22.05.2005 19:23
finfdfirst & findnext массив из строк каждому элементу присвается путь..... выводится список в данной папке файлы пронумерованы вводишь число и открывается файл: 1)если ехе то запустить 2)если нет то блокнотом открыть (тхт,ini....) 3)если папка то сделать ее текущей и в ней вывести список файлов так как узнать является файл папкой или файлом ?
volvo
22.05.2005 19:53
2 пути: 1) не очень хорошо, но будет работать без переделывания программы - у тебя есть имя файла - делаешь на него еще раз FindFirst (ну или пишешь функцию, которая это сделает) со значением Attr = Directory. Если нет ошибки, то это была директория, если ошибка есть - то файл. 2) понадобится небольшое изменение программы: ты не пользуешься
Цитата
массив из строк каждому элементу присвается путь
, а пользуешься массивом вот таких элементов:
type tinfo = record myPath: String; { здесь по-прежнему путь } isFolder: Boolean; { здесь - True если папка, False иначе } end;
и после FindFirst/FindNext кроме занесения пути в массив еще заносишь является ли файл папкой (анализируешь тот же Attr)
suriv
29.05.2005 6:31
я пошол дргим путем (третьим :D ) выложу.....
тока вот проблема: если bmp,gif,jpeg то делать тто если txt,ini,pas то делать то
но хз как. тока если 1условие- если bmp то делать то как сделать чтоб "несколько" было ?
volvo
29.05.2005 12:25
Цитата(suriv @ 29.05.05 2:31)
если bmp,gif,jpeg то делать тто если txt,ini,pas то делать то
Правда? А что, папка не может называться EXAMPLE.PAS, например?
suriv
29.05.2005 13:42
может но пусть так будет..... так как это реализовать ? а ? :low:
volvo
29.05.2005 18:57
Что именно ты хочешь чтоб тебе сказали?
extension := ... { выделяешь расширение из имени файла } if (extension = 'bmp') or (extension = 'gif') or (extension = 'jpg') then ...
Это?
suriv
29.05.2005 20:05
да. недодумался а я писал if extension='bmp' or if extension='gif'...... :D спасибо
suriv
29.05.2005 20:16
вот короче пока еще не доделал что хотел.... но уже запутался... :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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.