Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 398
от 27.02.2006, 11:57

Администратор:Калашников О.А.
В рассылке:Подписчиков: 266, Экспертов: 68
В номере:Вопросов: 3, Ответов: 20


Вопрос № 35915: Здравствуте эксперты! У меня есть кнопка Button, как сделать чтобы когда на нее нажимаеш открывался файл который ты ей указал? Заранее благодарен!...
Вопрос № 35932: Привет всем !!! Вот вопрос Memo1.Lines.Add(buf); тут мы добовляем в memo1 1-ю строку из файла !!! А как вывести содержимое всего файла ??? А вот ешё посоветуйте что нибуть по работе с COM портами !!! Только на Русском !!...
Вопрос № 35947: Добрый день! Подскажите пожайлуста, как можно реализовать: 1. Создаю массив кнопок. Отображаю их на форме. Как удалить кнопку не только из масива но из формы. Не надо скрывать, надо удалить. 2. Подскажите какую-нибудь структуру, динамичес...

Вопрос № 35.915
Здравствуте эксперты!
У меня есть кнопка Button, как сделать чтобы когда на нее нажимаеш открывался файл
который ты ей указал?
Заранее благодарен!
Отправлен: 21.02.2006, 19:20
Вопрос задал: BatanRus (статус: Посетитель)
Всего ответов: 8
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ерёмин Андрей
Здравствуйте, BatanRus!
Кладёте на форму TOpenDialog (вкладка Dialogs). А дальше щёлкаете дважды по кнопке и пишете код:

uses ShellAPI;
...
if OpenDialog1.Execute then
ShellExecute(0,'open',PChar(OpenDialog1.FileName),'','',SW_SHOWNORMAL);


Строку с "uses" естественно в самое начало модуля - т.е. просто добавить в список название "ShellAPI".
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 21.02.2006, 20:53

Отвечает: Злоумышленник
Здравствуйте, BatanRus!
...
uses
ShellApi;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(form1.Handle,nil,'D:SomeFile.txt',nil,nil,SW_SHOWNORMAL);
end;
---------
Почему нет встроенного языка 1С на мордовском? Было бы клёво!
Ответ отправил: Злоумышленник (статус: 3-ий класс)
Отправлен: 21.02.2006, 21:35

Отвечает: Leshiy2006
Здравствуйте, BatanRus! Выражайтесь конкретней какой файл и как его открывать-через Вашу прогу или через другую
1)
var
F:File;

AssignFile(F,FileName);
Reset(F);

если хотите чтобы пользователь сам выбирал файл используйте OpenDialog

2) Uses ShellAPI

ShellExecute(0,'open',PChar(OpenDialog1.FileName),'','',SW_SHOWNORMAL);

Удачи!
Ответ отправил: Leshiy2006 (статус: 3-ий класс)
Отправлен: 21.02.2006, 22:35

Отвечает: sir henry
Здравствуйте, BatanRus!
Для того, чтобы иметь возможность выбрать файл для открытия, нужно кинуть на форму компонент TOpenDialog.
В событии кнопки OnClick запишите:
If OpenDialog1.Execute The
ShellExecute(0, 'open', PChar(OpenDialog1.FileName), NIL, NIL, SW_SHOW);
Для того, чтобы выбирать файлы нужного Вам формата, запишите в свойство компонента TOpenDialog расширение нужных Вам файлов:
OpenDialogI.Filter := 'Текстовые файлы|*.txt';
Если нужно задать каталог где файл отличный от текущего, то можно сделать так:
OpenDialogI.InitiaiDir := 'c:Мои_тексты';
Не забудте в строке USES подключить модуль ShellAPI.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 22.02.2006, 06:00

Отвечает: Diman_A
Здравствуйте, BatanRus!
If OpenDialog1.Execute Then
Memo1.Lines.LoadFromFile(FileName);
Ответ отправил: Diman_A (статус: 5-ый класс)
Отправлен: 22.02.2006, 13:28

Отвечает: Полховский Александр Владимирович
Здравствуйте, BatanRus!
И всё же добавлю.
Есть в модуле ShellAPI процедура ShellExecute.
Если "открыть" подразумевает запустить программу, то в Parameters записываем параметры к программе (или '' усли их нет), если же открыть документ стандартной для неё программой (.doc - msword, .txt - блокнот и т.п.), то пишем nil.
Пример:
shellexecute(handle, 'open', 'c: elax estart.cmd', '', 'c: elax', sw_shownormal);
shellexecute(handle, 'open', 'c:FRUNLOG.TXT', nil, 'c:', sw_shownormal);
Вместо sw_shownormal можно и другие использовать (это целое число), тогда можно запустить в развёрнутом или свёрнутом виде.
---------
Спасём нашу хрупкую планету !
Ответ отправил: Полховский Александр Владимирович (статус: Студент)
Отправлен: 22.02.2006, 17:24

Отвечает: Ataman N. N.
Здравствуйте, BatanRus!
Задавайте, пожалуйтса, вопрос конкретнее. Не ясно, какой файл Вы хотите открывать, то ли текстовай, то ли другой какой-то.
Ответ отправил: Ataman N. N. (статус: 8-ой класс)
Отправлен: 22.02.2006, 17:37

Отвечает: Николай Б.
Здравствуйте, BatanRus!
Если нужно открыть вайл (запустить программу) программой, назначенной по умолчанию в windows, то используй две (точнее, одну из них) ниже приведённые ф-ции.

var filename : string; // строка с названием файла

uses ...,Windows;
WinExec(Pchar(filename),SW_HIDE);

ИЛИ

uses ...,ShellApi;
ShellExecute(0,'OPEN',filename,'','',0); // попробуй посмотреть другие параметры этой ф-ции

Если нужно загрузить текст в Memo, исп. следующий код

Memo.Lines.LoadFromFile(filename)


---------
Лучшая благодарность - отличная (5) оценка за ответ!
Ответ отправил: Николай Б. (статус: 1-ый класс)
Отправлен: 23.02.2006, 08:50


Вопрос № 35.932
Привет всем !!!
Вот вопрос
Memo1.Lines.Add(buf);
тут мы добовляем в memo1 1-ю строку из файла !!!
А как вывести содержимое всего файла ???

А вот ешё посоветуйте что нибуть по работе с COM портами !!!
Только на Русском !!!
Спасибо !!!
Отправлен: 21.02.2006, 23:53
Вопрос задал: Tamashev Denis M (статус: 1-ый класс)
Всего ответов: 7
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, Tamashev Denis M!
Очень просто. Memo.Lines.LoadFromFile(filename);

Удачи.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 21.02.2006, 23:59
Оценка за ответ: 4

Отвечает: Ujin Antikvar
Здравствуйте, Tamashev Denis M!

1. Добавить в Memo все содержимое файла можно так

var F:TextFile;
s:string;
--------
AssignFile(F,FileName);
While not eof(F) do
begin
s = ReadLn(F);
Memo1.Lines.Add(s);
end;

либо

Memo1.Lines.LoadFromFile(FileName)

2. Могу дать книгу по COM на русском (мое мыло arbuznikov@matrix.odessa.ua)
---------
"Будущее принадлежит тем, кто верен своей мечте" - Элеонора Рузвельт
Ответ отправил: Ujin Antikvar (статус: 5-ый класс)
Отправлен: 22.02.2006, 00:07
Оценка за ответ: 5
Комментарий оценки:
Спасибо а книга электронная ???

Отвечает: komatoz
Здравствуйте, Tamashev Denis M!

memo1.Lines.LoadFromFile('File.txt');

а вот здесь вордовские файлы уже не получится просмотреть..
Ответ отправил: komatoz (статус: 2-ой класс)
Отправлен: 22.02.2006, 02:20
Оценка за ответ: 5

Отвечает: sir henry
Здравствуйте, Tamashev Denis M!
Нет ничего прще:

If OpenDialog1.Execute The
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
Загружает в Мемо файл, который Вы выбрали с помощью диалога открытия файла.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 22.02.2006, 06:04
Оценка за ответ: 5

Отвечает: Diman_A
Здравствуйте, Tamashev Denis M!
Чтобы загрузить содержимое файла в memo, воспользуйся процедурой Memo1.Lines.LoadFromFile(FileName);
Ответ отправил: Diman_A (статус: 5-ый класс)
Отправлен: 22.02.2006, 13:27
Оценка за ответ: 4

Отвечает: Ataman N. N.
Здравствуйте, Tamashev Denis M!
Memo1.Lines.LoadFromFile('<имя файла>');
По поводу СОМ порта - зайдите на сайт http://worldcpp.vingrad.ru/ там есть статья в разделе Ввод/Вывод. Но примеры написаны на С++.
Ответ отправил: Ataman N. N. (статус: 8-ой класс)
Отправлен: 22.02.2006, 17:27
Оценка за ответ: 5

Отвечает: Злоумышленник
Здравствуйте, Tamashev Denis M!
Ком порты:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1126&mode=print
http://www.delphikingdom.com/asp/viewitem.asp?catalogID=388
Это лучшие руководства.

---------
Почему нет встроенного языка 1С на мордовском? Было бы клёво!
Ответ отправил: Злоумышленник (статус: 3-ий класс)
Отправлен: 22.02.2006, 18:08
Оценка за ответ: 5
Комментарий оценки:
ПАСИБО !!!


Вопрос № 35.947
Добрый день!
Подскажите пожайлуста, как можно реализовать:
1. Создаю массив кнопок. Отображаю их на форме. Как удалить кнопку не только из масива но из формы. Не надо скрывать, надо удалить.
2. Подскажите какую-нибудь структуру, динамический массив. Элементы в него можно добовлять, и автоматически увеличиваеться массив.
Спасибо всем за ответы.
Отправлен: 22.02.2006, 07:19
Вопрос задал: AllexZ (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 13)

Отвечает: sir henry
Здравствуйте, AllexZ!
1. Любой объект удаляется с помощью метода Release.
2. Если автоматически, то Вам подойдет какой-либо из потомков класса TList.
Для динамисчекого массива, который уже есть в Дельфи, размер нужно определять вручную. У TList'а же при добавлении элемента размер увеличивается автоматом.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 22.02.2006, 07:44
Оценка за ответ: 4
Комментарий оценки:
Еще бы пример по TList.

Отвечает: Jadd
Здравствуйте, AllexZ!
1. MyButton.Free; для удаления.
2. Можно, как написано выше, а можно написать свой класс, который будет заниматься диспетчиризацией работы с динамическим массивом. Лично я бы сделал примерно так (о С++ где ты? :) ).

К примеру.
arr: array of MyStruct; //объявил

SetLength(arr, 1); //под первый эемент, а потом его же вызываешь для установки новой длины

Успехов.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 22.02.2006, 08:51
Оценка за ответ: 5
Комментарий оценки:
С++ где ты?
Что ты имел ввиду?

Отвечает: komatoz
Здравствуйте, AllexZ!
у кнопки есть функция или процедура Destroy..
Ответ отправил: komatoz (статус: 2-ой класс)
Отправлен: 22.02.2006, 10:48

Отвечает: Ataman N. N.
Здравствуйте, AllexZ!
2. Стандартная динамическая структура - TList, но с ней работать сложнее.
Динамический массив:
var DynAr: array of <Type> - описываем массив
Где-то в программе
SetLength(DynAr, CountEl) - устанавливаем длину массива (индексация елементов в дин.массиве начинается с нуля)//CountEl - число елементов, при CountEl=0 массив уничтожается.
DynAr:=nil - удаление массива, то же что и
SetLength(DynAr, 0).
Ответ отправил: Ataman N. N. (статус: 8-ой класс)
Отправлен: 22.02.2006, 17:23

Отвечает: Leshiy2006
Здравствуйте, AllexZ!
Вот небольшой пример(см приложение) если заранее неизвестно сколько кнопок надо то используйте следующее:
SetLength(<имя вашего массива>, i);
Удачи!

Приложение:

Ответ отправил: Leshiy2006 (статус: 3-ий класс)
Отправлен: 22.02.2006, 23:00


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.15 от 25.02.2006
Яндекс Rambler's Top100

В избранное