IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Работа с папками
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


Здравствуйте, это мое первое сообщение на форуме... smile.gif
Вот у меня такая задачка:
прога должна считать с дискеты названия папок и вывести их на экран.
Сразу вопрос: возможно ли это если дириктории имеют русские названия или название слишком длинное...?
Полистал учебники, но ничего похожего не нашел... sad.gif
Помогите пожалуйста, если можете...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Qleek
Каким компилятором пользуемся? Если ТР, то в случае длинного имени оно будет усекаться до 8-ми знаков (вместо "My Documents" будет "MYDOCU~1"). Кириллица, насколько я помню, через ТР не отображается.

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
Кириллица, насколько я помню, через ТР не отображается.

Отображается!
Любые имена хорошо отображаются, была бы загруженна кодовая страница 866.
И усекаются жо 8 симв. имя...


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


Так вот мой вопрос сам по себе: как заставить программу прочитать название папок? для этого есть команда? А компилятор - TP7. И еще, если имя более 8 символов, сможет ли программа в этой папке, которую найдет на дискете, создать текстовый файл?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата(Qleek @ 28.01.05 16:29)
как заставить программу прочитать название папок? для этого есть команда?

Для этого пользуемся вот такой конструкцией (она ищет все директории в корневом каталоге 'A:\' и печатает их названия...):
Код

uses dos;
var sRec: SearchRec;
begin
 findfirst('A:\*.*', directory, sRec);
 while doserror = 0 do
   begin
     with sRec do write(name:15);
     findnext(sRec)
   end;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


ух ты.... оно даже работает... :D спасибо....
но у меня назрел еще вопрос:
можно ли каждой папке присвоить свою переменную?
и если это переменная равна заложенной в программе, открыть эту папку и записать файл именно туда.... те прога должна спросить у меня в какую папку нада файлик бросить...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Qleek
Цитата
оно даже работает...
blink.gif А если оно не работает, зачем постить?

А насчет
Цитата
прога должна спросить у меня в какую папку нада файлик бросить...
Просто читаем имя папки, проверяем, что она существует, и копируем в нее файл... К сожалению, средства копирования файлов в Паскаль не встроены, и надо писать свою функцию, или вызывать "command.com"

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


Цитата
А если оно не работает, зачем постить?

это юмор... smile.gif
Цитата
Просто читаем имя папки

если можно, пожалуйста поподробнее, а то у меня не получилось...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Что значит не получилось? Я бы делал так:
Код
uses dos;
var sRec: SearchRec;
const
 name_to_copy = 'C:\test.exe';
begin
 write('enter the dir name: '); readln(s);
 findfirst('A:\'+s, directory, sRec);
 if DosError <> 0 then halt; {директория не существует}
 ...
 {а вот тут - каким-то образом копировать файл
 с именем name_to_copy в папку 'A:\'+s}
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
К сожалению, средства копирования файлов в Паскаль не встроены, и надо писать свою функцию, или вызывать "command.com"

Не обязательно через command.com, можно побайтово копировать, или еще способ красивый через объекты (см. ФАК)


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


:molitva: Большое спасибо, вы мне очень помогли...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Бывалый
***

Группа: Пользователи
Сообщений: 247
Пол: Мужской

Репутация: -  1  +


Цитата(Oleg_Z @ 29.01.05 3:33)
Не обязательно через command.com, можно побайтово копировать, или еще способ красивый через объекты (см. ФАК)

ООП хорошо когда в меру - скоро уже начнут каждый пиксель на экране монитора представлять как объект (причем как наследник базового класса с примерно 30 методами, 3 разными конструкторами и полусотней полей, которые будут в являться объектами, записями, всевозможными дескриптормаи )

А по теме - чем тебя BlockRead + Blockwrite смущает, для такой архисложнойзадачи думаю они в самый раз smile.gif


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
А по теме - чем тебя BlockRead + Blockwrite смущает, для такой архисложнойзадачи думаю они в самый раз

Меня ничем, но рассказать стоит имхо про все.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Бывалый
***

Группа: Пользователи
Сообщений: 247
Пол: Мужской

Репутация: -  1  +


не могу не согласиться :yes:


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


В процессе написания программы у меня возник один ламерской вопрос:
вот есть у меня переменная:
Цитата
Var  st:string;

можно ли этой переменную приравнять к названию одной из папки?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


Код
uses dos;
var sRec: SearchRec;
st:string;
begin
findfirst('A:\*.*', directory, sRec);
if doserror=0 then st:=sRec.Name else halt(1);
WriteLn(st);  
end.

Можно


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


FreeMan, спасибо.
Господа, позвольте поинтересоваться:
возможен ли поиск скрытых папок и файлов?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гость






Цитата
возможен ли поиск скрытых папок и файлов?

Вполне... Вот эта программка печатает имена скрытых папок на F:\
Код
uses dos;
var sRec: SearchRec;
begin
 writeln('results');
 findfirst('F:\*.*', directory+hidden, sRec);
 while doserror = 0 do
   begin
     with sRec do
       if attr and hidden = hidden then write(name:15);
     findnext(sRec)
   end;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


Цитата
directory+hidden

а какие здесь еще можно употребить параметры?

Цитата
writeln('results')

поясните пожалуйста эту строчку...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Гость






Первая строчка - "пережиток прошлого" lol.gif Я просто забыл ее удалить (проверял программу с разными атрибутами и вставил ее чтобы разграничивать результаты)...

А насчет какие еще параметры доступны... Вот что определено в модуле Dos:
Код

Const
   ReadOnly = $01;
   Hidden = $02;
   SysFile = $04;
   VolumeID = $08;
   Directory = $10;
   Archive = $20;
   AnyFile = $3F;


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.03.2024 11:35
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name