Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.02.2008, 15:58
Gad99 Gad99 вне форума
Новичок
 
Регистрация: 21.02.2008
Адрес: мурманск
Сообщения: 72
Репутация: 10
По умолчанию Как бы реализовать простую штукенцию

В папке лежать файлы(анкеты) типа "запись", программа находит все нужные файлы и выводит в какую либо область напр "ListBox" немного информации для ознакомления из каждого файла, далее при двойном нажатии на выбранное поле нужно загрузить этот файл. Как бы связать эту информацию с файлом ?
Ответить с цитированием
  #2  
Старый 28.02.2008, 19:31
Phedor Phedor вне форума
Начинающий
 
Регистрация: 28.02.2008
Сообщения: 118
Репутация: 21
По умолчанию

1. Либо сохраняешт в отдельный список имена файлов, а потом по индексу можешь узнать
2. Либо (что не надежно) высчитывать Index по FileSearch, т.е. когда добавлялась строка с индексом 5 (ListBox.Items[5]), она естественно добавлялась при 6-ом NextFind-е, так можно вычислить :-) НО! Не факт что повторный поиск выдает в таком же порядке и что файлы небыли удалены или добавлены.
Ответить с цитированием
  #3  
Старый 28.02.2008, 21:51
Gad99 Gad99 вне форума
Новичок
 
Регистрация: 21.02.2008
Адрес: мурманск
Сообщения: 72
Репутация: 10
По умолчанию

Да я уже пробовал через динамический массив но что то не то, то ли я где то ошибку допустил толи еще что то, в общем при обращении к строке загружался не тот файл. ладно попробую еще раз.
Ответить с цитированием
  #4  
Старый 28.02.2008, 22:35
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Достаточно создать класс типа TMyFile
(смотри вложенный пример)

как работать с файлами я туда не писал надеюсь это ты уже и сам написал
Вложения
Тип файла: zip ListFile.zip (3.4 Кбайт, 23 просмотров)
Ответить с цитированием
  #5  
Старый 28.02.2008, 23:22
Gad99 Gad99 вне форума
Новичок
 
Регистрация: 21.02.2008
Адрес: мурманск
Сообщения: 72
Репутация: 10
По умолчанию

не могу закачать файл, DownloadMaster скачивает attachment.php а встроенная качалка нехотит перехватывать и DM не отключается.
зараза. Скачал, пришлось IE юзать

Последний раз редактировалось Gad99, 28.02.2008 в 23:32.
Ответить с цитированием
  #6  
Старый 29.02.2008, 09:08
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Не понял зачем 3 кило кочалкой мой Лис в 2 секунды закачал
Ответить с цитированием
  #7  
Старый 01.03.2008, 00:06
Gad99 Gad99 вне форума
Новичок
 
Регистрация: 21.02.2008
Адрес: мурманск
Сообщения: 72
Репутация: 10
Восклицание

Дык о чем и говорю. У мну тоже лис + (DM + FlashGot) установлены. Дык эта связка качалок перехватывали закачку и качали не то что надо, а отключить их не как не получалось. Ну да ладно скачал и появился вопрос. Я с классами не очень точнее совсем ни как. С горем пополам собрал все вместе но не могу срастить такую стоку.
Код:
AssignFile(Anketa1, );
и
Load1.ListBox1.Items.Objects 
то биш вытащить имя файла для того чтобы загрузить его.
Ответить с цитированием
  #8  
Старый 02.03.2008, 19:38
Gad99 Gad99 вне форума
Новичок
 
Регистрация: 21.02.2008
Адрес: мурманск
Сообщения: 72
Репутация: 10
Смущение

Цитата:
Сообщение от s0Creator
Достаточно создать класс типа TMyFile
(смотри вложенный пример)

как работать с файлами я туда не писал надеюсь это ты уже и сам написал

Может подскажешь так что б до конца дошло
Ответить с цитированием
  #9  
Старый 02.03.2008, 20:43
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Код:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
  // ItemIndex - текущий индекс (проверим не на пустой лист щелкнули)
 if ListBox1.ItemIndex < 0 then exit;
 // проверяет что индекс содержит наш объект
 if not (ListBox1.Items.Objects[ListBox1.ItemIndex] is TMyFile) then exit;
 // выдаем сообщение или AssignFile(Anketa1, (ListBox1.Items.Objects[ListBox1.ItemIndex] as TMyFile).Name);
 Application.MessageBox(PChar('Выбран файл: ' + (ListBox1.Items.Objects[ListBox1.ItemIndex] as TMyFile).Name),'Выбран файл')
end;
Ответить с цитированием
  #10  
Старый 02.03.2008, 21:22
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Радость Немного дополню(надеюсь не лишне)

Если можно, то немного дополню:
За место
Код:
function Name: string;
Выгоднее да и с расширенными возможностями, т.е. можно изменить имя, да и проще код, будет вот так:
Код:
property Name: string read Fname write Fname;
__________________
Если Вы находите ошибки, исправить которые дело долгое и нудное, ничего не делайте - просто внесите их в список особенностей
Ответить с цитированием
  #11  
Старый 02.03.2008, 21:54
Gad99 Gad99 вне форума
Новичок
 
Регистрация: 21.02.2008
Адрес: мурманск
Сообщения: 72
Репутация: 10
Печаль

Компилятор все равно ругается вот на эту строчку
AssignFile(Anketa1,(Load1.ListBox1.Items.Objects[Load1.ListBox1.ItemIndex] as TMyFile).Name)+'.tms');
Incompatible types: 'String' and 'Procedure', untyped pointer or parameter.
Весь код
Код:
procedure TForm1.Load1ListBox1DblClick(Sender: TObject);
Var x : string;
begin
  SetCurrentDir(CurDir+'\data\');
  if Load1.ListBox1.ItemIndex < 0 then exit;
  if not (Load1.ListBox1.Items.Objects[Load1.ListBox1.ItemIndex] is TMyFile) then exit;
  AssignFile(Anketa1,(Load1.ListBox1.Items.Objects[Load1.ListBox1.ItemIndex] as TMyFile).Name)+'.tms');
  Reset(Anketa1);
  Read(Anketa1,Anketa);
  CloseFile(Anketa1);
end;
Load1 - это фрейм.

Последний раз редактировалось Gad99, 02.03.2008 в 21:57.
Ответить с цитированием
  #12  
Старый 02.03.2008, 23:19
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию дополнение лишнее

Цитата:
Сообщение от Oleg
Если можно, то немного дополню:
За место
Код:
function Name: string;
Выгоднее да и с расширенными возможностями, т.е. можно изменить имя, да и проще код, будет вот так:
Код:
property Name: string read Fname write Fname;

если б мы объект использовали в полной мере можно было бы,
а так при создании записываем, а Name() только для чтения
можно вообще:
PHP код:
TMyFile = class
  private
  public
    
constructor Create(Val string);
    
Namestring;
  
end
если б защищали FName методами типа GetName и SetName
тогда property имеет смысл, а так только надстройка.
Ответить с цитированием
  #13  
Старый 02.03.2008, 23:37
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Цитата:
Сообщение от Gad99
Компилятор все равно ругается вот на эту строчку
AssignFile(Anketa1,(Load1.ListBox1.Items.Objects[Load1.ListBox1.ItemIndex] as TMyFile).Name)+'.tms');
у мена D7 компилятор не ругается (смотри файл)
попробуй убрать красную скобку
AssignFile(Anketa1,(Load1.ListBox1.Items.Objects[Load1.ListBox1.ItemIndex] as TMyFile).Name)+'.tms');

а +'.tms' зачем? ты же Name никому не показываешь и извлекаеш из файла так и храни там хоть полный путь (хотя это уже твое дело)
И не забывай смотреть, что пишешь
Вложения
Тип файла: zip ListFile.zip (4.9 Кбайт, 1 просмотров)
Ответить с цитированием
  #14  
Старый 03.03.2008, 00:07
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

хотел бы еще раз вернуться к
PHP код:
property Namestring read Fname write Fname
Надеюсь мой ответ не показался грубым
Можно вынести этот вопрос в отдельную тему
типа:
зачем писать
PHP код:
private
    
Fname string;
  public
    
property Namestring read Fname write Fname;
  
end
если property не защищает приват
понятно если
property Name: string read Fname;
или
property Name: string read GetName write SetName;

и почему в компонентах это часто встречается?

(у меня уже есть свой вариант ответа)
Ответить с цитированием
  #15  
Старый 03.03.2008, 00:31
Gad99 Gad99 вне форума
Новичок
 
Регистрация: 21.02.2008
Адрес: мурманск
Сообщения: 72
Репутация: 10
Смущение

Все заработало СПС, после того как кое что переделал:
1) убрал лишнюю скобку (которая крассная)
2) убрал '.TMS', мне казалось что в .name хранилось только имя файла без разширения.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:55.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter