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

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

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

 
 Ответить  Открыть новую тему 
> Длина имени файла!
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 201

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


Можно ди как-нибудь в Паскале сделать так, чтобы имя файла было не 8 символов, а больше, хотя бы 16, но конечно лучше больше.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

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

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


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


Бывалый
***

Группа: Пользователи
Сообщений: 201

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


А нестандартными??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 209

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


Ну здесь Паскаль совсем не виноват это во всех dos программах....
Вообще-то длина файла в дос до 80 символов , ну это естественно вместе с путем к нему, а имя самого файла 8 символов + 3 на расширение, длинные имена стали доступны только с появлением ОС Windows, и из нее (в режиме эмуляции дос) в принципе можно обращаться к файлам и каталогам с длинными именами , для этого просто нужно брать их в кавычки, ну а так собснно, думаю, - нет.
Вобщем вот такие пироги.


--------------------
Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

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

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


Нельзя


--------------------
With the best regards Vit

Все всегда уезжают навсегда. Вернуться невозможно-вместо нас всегда возвращается кто-то другой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

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

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


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


Бывалый
***

Группа: Пользователи
Сообщений: 201

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


Цитата
...и зачем тебе это надо?

Да нужно программу написать, которая будет вытаскивать имя файла и записывать его в другой файл, а имена файлов в основном длинные.Собственно я нашел одну интересную штучку:
USES Strings;

type
 TSearchRec = record
   attr : longint;
   creation : comp;
   lastaccess : comp;
   lastmodification : comp;
   highfilesize : longint;
   lowfilesize : longint;
   reserved : comp;
   name : array[0..259] of char;
   shortname : array[0..13] of char;
   handle : word;
 end;

const
 faReadOnly      =  $01;
 faHidden        =  $02;
 faSysFile       =  $04;
 faVolumeID      =  $08;
 faDirectory     =  $10;
 faArchive       =  $20;
 faAnyFile       =  $3F;

function findfirst(filespec:string;attr:word;var S:TSearchRec):integer;
begin
 filespec := filespec + #0;
 S.attr := attr;
 asm
   push ds
   push ss
   pop ds
   lea dx,filespec+1
   les di,S
   mov ax,$714e
   mov cx,attr
   mov si,0
   int $21
   les di,S
   mov word ptr es:[di+TSearchRec.handle], ax
   jc @1
   xor ax,ax
 @1:
   mov @result,ax
   pop ds
 end;
end;


function FindNext(var S:TSearchRec):integer;
begin
 asm
   mov ax,$714f
   mov si,0
   les di,S
   mov bx,word ptr es:[di+TSearchRec.Handle]
   int $21
   jc @1
   xor ax,ax                                    
 @1:                                            
   mov @result,ax                              
 end;                                          
end;                                            
                                               
function FindClose(var S:TSearchRec):integer;    
begin                                            
 asm                                            
   mov ax,$71a1                                
   les di,S
   mov bx,word ptr es:[di+TSearchRec.Handle]    
   int $21                                      
   jc @1
   xor ax,ax                                                            
 @1:                                                                    
   mov @result,ax
 end;                                                                  
end;
                                                                       
procedure ShowLongNames(const path:string);                              
var                                                                      
 S : TSearchRec;
 Res : Integer;                                                        
begin                                                                    
 Res := findfirst(path+'*.*',faAnyFile-faVolumeID,S);                  
 while Res = 0 do                                                      
 begin                                                                  
   with S do                                                            
   begin                                                                
     if (S.Attr and faDirectory) <> 0 then                              
     begin                                                              
       if (StrComp(Name,'.') <> 0) and (StrComp(Name,'..') <> 0) then
       begin                                                            
         if ShortName[0] <> #0 then
           ShowLongNames(path+''+StrPas(ShortName))
         else                                                          
           ShowLongNames(path+''+StrPas(Name));
       end;                                                            
     end;                                                              
     if ShortName[0] <> #0 then                                        
       writeln('ren ',path+''+StrPas(ShortName),' "',name,'"');        
   end;                                                                
   Res := FindNext(S);                                                  
 end;                                                                  
 FindClose(S);                                                          
end;

var
 x : integer;
begin
 showlongnames('D:');
end.

На как сделать поиск файлов(*.mp3) вот с такой фигней пока не догадался!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


...
*****

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

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


Может легче сократить имена файлов?!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 




- Текстовая версия 22.08.2017 19:52
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"