Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Помогите пеобразовать код


Автор: Trahten 6.2.2006, 23:53
Код
put:=edit1.Text;
if FindFirst(put, faAnyFile, SearchRec)=0 then
repeat
s:=SearchRec.Name;

if (s='.') or (s='..') then else
StringGrid1.Cols[1].Add(s);
StringGrid1.RowCount:=StringGrid1.RowCount+1;
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);


Этот код сканирует всю директорию и заноcит в таблицу имена файлов с РАСШИЕРЕНИЯМИ.
Как получить на выходе имена файлов без разширений. Или предложите другой код. smile

Автор: Snowy 7.2.2006, 00:08
Код

  put:=edit1.Text;    
  if FindFirst(put, faAnyFile, SearchRec)=0 then    
  repeat    
    s:=SearchRec.Name;
    s := copy(s, 1, Length(s) - Length(ExtractFileExt(s)));
    if s[1] <> '.' then begin
      StringGrid1.Cols[1].Add(s);    
      StringGrid1.RowCount:=StringGrid1.RowCount+1;
    end;
  until FindNext(SearchRec) <> 0;    
  FindClose(SearchRec);

Добавлено @ 00:14
Или написать свою функцию отрезания расширений:
Код

function ExtractFileNamePart(const FileName: string): string;
var
  I: Integer;
begin
  I := LastDelimiter('.', FileName);
  if (I > 0) and (FileName[I] = '.') then
    Result := Copy(FileName, 1, I-1) else
    Result := FileName;
end;

Автор: Демо 7.2.2006, 00:44
Код

    FilePath := ExtractFileName(FilePath);
    FilePath := Copy(FilePath,1,Length(ExtractFileExt(FilePath)));


Автор: Albinos_x 7.2.2006, 06:23
Цитата(Демо @ 7.2.2006, 00:44 Найти цитируемый пост)

код Pascal/Delphi
    FilePath := ExtractFileName(FilePath);
    FilePath := Copy(FilePath,1,Length(ExtractFileExt(FilePath)));

так не прокатит... получишь от имени файла несколько символов по количеству символов в расширении вместе с точкой, тогда уж вот так:
Код
...
FilePath := ExtractFileName(FilePath);    
n:=Length(FilePath);
n1:=Length(ExtractFileExt(FilePath));
FilePath := Copy(FilePath,1,n-n1);
...

Автор: ~FoX~ 7.2.2006, 08:39
Код

function GetShortName(s: string): string; //Получаем файа без расширения
var
  i: integer;
begin
  i:=LastDelimiter('.', s);
  result:=copy(s, 0, Length(s)-i+1);
end;

Автор: Snowy 7.2.2006, 09:50
Цитата(~FoX~ @ 7.2.2006, 08:39 Найти цитируемый пост)

  i:=LastDelimiter('.', s);
  result:=copy(s, 0, Length(s)-i+1);

Ну во-первых copy не от 0, а от 1.
А во-вторых... Если файл без расширения?

Цитата(Демо @ 7.2.2006, 00:44 Найти цитируемый пост)
ExtractFileName(FilePath);

Зачем? В TSearchRec у файлов нет пути. Там только имя и расширение.

Автор: Albinos_x 7.2.2006, 10:14
Цитата(Snowy @ 7.2.2006, 09:50 Найти цитируемый пост)

Зачем? В TSearchRec у файлов нет пути. Там только имя и расширение.

угу...

Автор: Trahten 7.2.2006, 10:18
Прога работет по коду Albinos_x ВСЕМ спасибо тему закрываем

Автор: Yanis 8.2.2006, 10:42
Зачем загромождать код, когда можно обойтись одной строчкой:
Код

ShowMEssage(ChangeFileExt('yanis.txt', ''));

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)