Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> убрать расширение, в поиске 
V
    Опции темы
neweraser
Дата 23.6.2008, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



у меня идет поиск и вывод файлов в Stringrid:

Код

Procedure ScanDir(Dir:string);
var
  SearchRec:TSearchRec;
begin
  if Dir<>'' then if Dir[length(Dir)]<>'\' then Dir:=Dir+'\';
  if FindFirst(Dir+'*.*', faAnyFile, SearchRec)=0 then
  repeat
    if (SearchRec.name='.') or (SearchRec.name='..') then continue;
    if (SearchRec.Attr and faDirectory)<>0 then
    ScanDir(Dir+SearchRec.name)
  else
  begin
    ScanForm.Grid.RowCount:= ScanForm.Grid.RowCount + 1;
    ScanForm.Grid.Cells[0, i]:= (SearchRec.name);
    ScanForm.Grid.Cells[3, i]:= (dir);
    inc(i);
  end;
  until FindNext(SearchRec)<>0;
  FindClose(SearchRec);
end;

(код взят из DRKB)
мне собственно нужно, чтобы в таблицу выводилось имя файла без расширения и в 3-ю колонку таблицы папка (без полного пути), в которой лежит найденный файл.
помогите  smile 
буду очень признателен


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Frees
Дата 23.6.2008, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



используй 
Код

      ExtractFilePath()
      ExtractFileDir()
      ExtractFileName()
      ExtractFileExt()


Добавлено через 4 минуты и 22 секунды
Код

Procedure ScanDir(Dir:string);
var
  SearchRec:TSearchRec;
begin
  if Dir<>'' then if Dir[length(Dir)]<>'\' then Dir:=Dir+'\';
  if FindFirst(Dir+'*.*', faAnyFile, SearchRec)=0 then
  repeat
    if (SearchRec.name='.') or (SearchRec.name='..') then continue;
    if (SearchRec.Attr and faDirectory)<>0 then
    ScanDir(Dir+SearchRec.name)
  else
  begin
    ScanForm.Grid.RowCount:= ScanForm.Grid.RowCount + 1;
    ScanForm.Grid.Cells[0, i]:=Copy(SearchRec.name, 0,
              StrLen(PAnsiChar(SearchRec.name)) - 4);
    ScanForm.Grid.Cells[3, i]:= ExtractFilePath(dir);
    inc(i);
  end;
  until FindNext(SearchRec)<>0;
  FindClose(SearchRec);
end;



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
ama_kid
Дата 23.6.2008, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 9
Всего: 95



Цитата(neweraser @  23.6.2008,  08:39 Найти цитируемый пост)
нужно, чтобы в таблицу выводилось имя файла без расширения
Код
ScanForm.Grid.Cells[0, i]:= ExtractFileName(SearchRec.name);

Цитата(neweraser @  23.6.2008,  08:39 Найти цитируемый пост)
в 3-ю колонку таблицы папка (без полного пути), в которой лежит найденный файл
Здесь имхо без вспомсредств не обойтись:
Код
function GetLastFolder(Directory:string):string;
var
 Num,i:integer;
begin
 Result:='';
 if Directory[Length(Directory)]='\' then SetLength(Directory,Length(Directory)-1);
 Num:=LastDelimiter('\',Directory);
 for i:= Num+1 to Length(Directory) do Result:=Result+Directory[i];
end;
...
ScanForm.Grid.Cells[3, i]:= GetLastFolder(Dir);



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
neweraser
Дата 23.6.2008, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



спасибо! сегодня вечером попробую, но насчет 
Цитата(Frees @  23.6.2008,  08:58 Найти цитируемый пост)
ScanForm.Grid.Cells[3, i]:= ExtractFilePath(dir);

у меня сомнения, т.к. я это кажется уже пробовал, выводило директорию, где находится программа, а у меня поиск производится совсем в другой папке

Это сообщение отредактировал(а) neweraser - 23.6.2008, 09:21


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
MetalFan
Дата 23.6.2008, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Цитата(ama_kid @  23.6.2008,  09:19 Найти цитируемый пост)
Num:=LastDelimiter('\',Directory);
 for i:= Num+1 to Length(Directory) do Result:=Result+Directory[i];

 smile  smile  smile 
а чем copy не угодила?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
neweraser
Дата 23.6.2008, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



Цитата(ama_kid @  23.6.2008,  09:19 Найти цитируемый пост)
ScanForm.Grid.Cells[0, i]:= ExtractFileName(SearchRec.name);

все равно выводит с расширениями


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Frees
Дата 23.6.2008, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



я так имя без расширения получаю
Цитата(Frees @  23.6.2008,  08:58 Найти цитируемый пост)
ScanForm.Grid.Cells[0, i]:=Copy(SearchRec.name, 0,              StrLen(PAnsiChar(SearchRec.name)) - 4);




--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
ama_kid
Дата 23.6.2008, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 9
Всего: 95



Цитата(neweraser @  23.6.2008,  13:54 Найти цитируемый пост)
все равно выводит с расширениями 

Код
ScanForm.Grid.Cells[0, i]:=StringReplace(ExtractFileName(SearchRec.Name),ExtractFileExt(SearchRec.Name),'',[rfReplaceAll]);


Добавлено через 1 минуту и 24 секунды
Цитата(Frees @  23.6.2008,  14:01 Найти цитируемый пост)
я так имя без расширения получаю
А если расширение больше трех символов?  smile

Добавлено через 2 минуты и 46 секунд
Цитата(MetalFan @  23.6.2008,  11:45 Найти цитируемый пост)
а чем copy не угодила? 
Угодила, в принципе можно и её заюзать, я просто по привычке вручную копирую  smile 



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Frees
Дата 23.6.2008, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Цитата(ama_kid @  23.6.2008,  14:01 Найти цитируемый пост)
ScanForm.Grid.Cells[0, i]:=StringReplace(ExtractFileName(SearchRec.Name),ExtractFileExt(SearchRec.Name),'',[rfReplaceAll]);

ExtractFileName(SearchRec.Name) помоему лишний можно просто SearchRec.Name


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
neweraser
Дата 24.6.2008, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



всем спасибо, все работает!


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1175 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.