![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 как в листобоксе сделать считывание файла из директории и удалением его формата 
		
	
		
		
		
		
		
	
		
		
	
	
	"c:\wer\qwer.qw" а что бы в листбоксе показывалось лишь название то есть "qwe" ![]()  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 помойму через массивы это всё делалось 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 FileListBox1  то что нужно было, )) вот только что то расширения файлов не могу убрать  и как задать директорию((( 
		
	
		
		
		
		
		
		
			Последний раз редактировалось жекаизжека, 01.10.2008 в 15:02. Причина: добавление  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Насколько я понимаю те надо из строки удалить нескколькл символов после точки? 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	   Как это сделать непомню...  Но примерно так должно быть : 1. Слово := Директория; 2. В Слове ищем "." 3. Узнаем сколько после нее знаков это будет N; 4. Удаляем с конца строки N + 1 знаков (плюс сама точка); Или тебе не это нужно?  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 По моему вышеописанный способ весьма примитивен >:-О 
		
	
		
		
		
		
			
		
		
		
		
		
			используй функции ExtractFileName('FileName') ExtractFileExt('FileName') для решения твоей проблемы вижу 2способа. Использовать просто обычный КомбоБокс и искать файлы ручками, либо перепиши сам контрол. Есть на закладке `самплз` и другой ему аналог - поищи, там это вроде можно реализовать. про директорию. Для этого придется на форму повесить ещё 2 контрола. На той же закладке есть компоненты ДрайвЛистБокс и второй для работы с директориями. свяжи их в инспекторе объектов, и всё. ну и напоследок. Я не уверен, но вроде можно напрямую с Итемами в ФайлЛистБокс работать..а там уже всё просто Последний раз редактировалось Ferra, 02.10.2008 в 14:13.  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Блин, через поиск файлы в директории находишь и ищещь точку... Копируешь в доп переменную что получится (через POS('.',S) возвращает номер буквы с точкой). потом снова ищещь до точки(вдруг точек несколько). Вот и все 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Ребята, все гораздо проще.  
		
	
		
		
		
		
		
	
		
		
	
	
	Варианта 2: 1. Вот функция (и класс-хелпер), которая добавляет строчку в лист бокс. Принимает на вход имя файла, помещает в контрол "чистое" имя (без пути и без расширения), а в коллекцию Objects - экземпляр класса-хелпера, содержащего полное имя файла. Ну и в довесок функция получения полного имени файла по индексу. внимание! В этом коде доп. ссылки на объекты-хелперы не сохраняются, так что при удалении строки из ListBox'а надо позаботиться об удалении соответсвующего хелпера. Код целиком вставляется в секцию имплементации. Если нужен доступ снаружи, то вынесите описания функций в секцию интерфейса. Код: 
	type
  TFileNameHelper = class
    FileName : String;
  end;
function AddFileName(AListBox : TListBox; AFileName : TFileName) : Integer;
var
  AHelper : TFileNameHelper;
begin
  AHelper := TFileNameHelper.Create;
  AHelper.FileName : =AFileName;
  Result := AListBox.AddObject(ChangeFileExt(ExtractFileName(AFileName),''),AHelper);
end;
function GetFileName(AListBox : TListBox; AIndex : Integer) : String
begin
  Result := (AListBox.Items.Objects[AIndex] As TFileNameHelper).FileName;
end;================================== Вариант 2ой - OwnerDraw. Файлы добавляются с полным путем как обычно: Код: 
	ListBox1.Items.Add('c:\myfolder\myfile.ext');А вот отрисовку итема листбокса делаем руками (в данном примере грубо, просто отрисовываем). Что надо для этого сделать: 1. У ListBox'а поставить свойство Style в значение lbOwnerDrawFixed. 2. Реализовать обработчик события OnDrawItem примерно так: Код: 
	procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  ACanvas : TCanvas;
  AText : String;
begin
  ACanvas := (Control As TListBox).Canvas;
  If State In [odSelected, odFocused]
    Then
      Begin
        ACanvas.Brush.Color := clHighlight;
        ACanvas.Font.Color := clHighlightText;
      End
    Else
      Begin
        ACanvas.Brush.Color := clWindow;
        ACanvas.Font.Color := clWindowText;
      End;
  ACanvas.FillRect(Rect);
  AText := ChangeFileExt(ExtractFileName((Control As TListBox).Items[Index),'');
  ACanvas.TextOut(Rect.Left,Rect.Top,AText);
end;При этом получение реального имени файла останется таким же, как было бы, если бы выводилось все обычным образом: Код: 
	AFileName := ListBox1.Items[AIndex];  | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 все разобрался...с расширениями даже лучше,мне больше подходит))), только теперь не могу понят, выделяю файл нажимаю на кнопку и пишет ошибку что не может найти файл, ниже код 
		
	
		
		
		
		
		
		
			это работает нормально без FileListBox1, при нажатие кнопки FS:=TFileStream.Create('files\1.txt', fmOpenRead); При выделении пункта из FileListBox и нажатие кнопки, выдает ошибку, где ошибка, можете подсказать. FS:=TFileStream.Create('+FileListBox1.OnChange+', fmOpenRead); маска в FileListBox1 прописана так Mask = files\*.* Последний раз редактировалось жекаизжека, 03.10.2008 в 13:26.  | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Есть такая функция.... 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	ExpandFileName И как раз получится: "c:\wer\qwer.qw" -> "qwer"  | 
| 
		 
			 
			#10  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Тупой инет! плохой инет!!! =( 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#11  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 ![]()  |