Вопрос № 87628: Как написать цикл чтобы загрузилось несколько картинок из одного файла???
...Вопрос № 87642: Здраствуйте эксперты.
Как перед тем как открыть файл, проверить существует ли он вобще?
Спасибо за ответы....Вопрос № 87645: Здраствуйте эксперты.
У меня вопрос, как можно впихнуть в EXE ресурс(другой файл, например .doc .txt) и как потом во время роботы программы его открыть (прочитать)?
Спасибо за ответы....Вопрос № 87660: Подскажите пожалуйста, как загрузить и сохранить на диске определенную страницу из интернет консольным приложением...Вопрос № 87677: День добрый, Уважаемые эксперты!!!
Создаю динамически форму, на ней главное меню. если написать строку 'Form1.ParentWindow:=GetDesktopWindow;', то меню не отображается. В чем ошибка.
Строка нужна....Вопрос № 87740: Здраствуйте эксперты.
У меня такой вопрос: я записываю программу А в реестр, HKEY_LOCAL_MACHINE и т. д. из програмы Б. Как из этой же программы Б, запустить програму А? (может ShellExecute, но тогда как найти путь к этому реестру?)
И еще мале...Вопрос № 87749: Добрый день, уважаемые эксперты. Дельного Ответа на предыдущий вопрос я, к сожалению, так и не получил. Хотелось бы задать его еще раз. Для данного алгоритма (приложение) поиска самого длинного предложения во введенном текста хочу спросить: как это н...
Вопрос № 87.628
Как написать цикл чтобы загрузилось несколько картинок из одного файла???
Отправлен: 19.05.2007, 15:48
Вопрос задал: Nezzer (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Gh0stik
Здравствуйте, Nezzer!
Судя по вопросу у Вас есть несколько компонентов типа TImage, и Вам необходимо в них занести данные из одного файла. Т.е. если у Вас эти объекты носят имена Image1, Image2, Image3, Image4 то код который загрузит картинку из одного файла в них будет выглядеть так:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to 4 do
TImage(FindComponent(format('Image%d',[i]))).Picture.LoadFromFile('file.bmp');
end;
Код выполнится по нажатию на кнопку BitBtn1 и соответственно загрузит картинку из файла с названием file.bmp.
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 19.05.2007, 16:39
Отвечает: Примак Руслан Николаевич
Здравствуйте, Nezzer!
Все зависит от того какого типа картинки вы хотите использовать. И какое содержимое вы будете хранить в файле. Самый простой это использование bmp файлов. Соединить их можно TotalCommander'om. Что-бы загрузить файлы, нужно знать длину каждого сегмента данных.
Приложение:
Ответ отправил: Примак Руслан Николаевич (статус: 1-ый класс)
Ответ отправлен: 21.05.2007, 14:00
Вопрос № 87.642
Здраствуйте эксперты.
Как перед тем как открыть файл, проверить существует ли он вобще?
Спасибо за ответы.
Для того чтобы проверить существует ли файл достаточно воспользоваться функцией function FileExists(const FileName: string): Boolean;, которая возвращает значение TRUE - если файл существует и FALSE - в противном случае.
Пример использования:
if FileExists('c:windowssystem32calc.exe') then
ShowMessage('Exist!!!') else ShowMessage('Not Exist!!!');
Аналогично можно проверить на существование и папку (директорию) при помощи функции function DirectoryExists(const Directory: string): Boolean;
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 19.05.2007, 18:13 Оценка за ответ: 5
Отвечает: Gsa
Здравствуйте, Иван Ивановввв!
с спомощью FileExists
Ответ отправил: Gsa (статус: 5-ый класс)
Ответ отправлен: 19.05.2007, 18:20 Оценка за ответ: 4 Комментарий оценки: выше это было уже сказано, но все равно спасибо
Отвечает: Jadd
Здравствуйте, Иван Ивановввв!
Функция CreateFile из WinAPI с флагом OPEN_EXISTING при отсутствии или невозможности открытия файла, вернет INVALID_HANDLE_VALUE, что может говорить о невозможности открытия файла, вследствие его отсутствия :)
Удачи
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Профессионал) Адрес: Санкт-Петербург WWW:http://www.sport-diary.ru ---- Ответ отправлен: 19.05.2007, 19:51 Оценка за ответ: 5
Отвечает: Esi
Здравствуйте, Иван Ивановввв!
Есть такая функция Fileexists('имя файла').
Ответ отправил: Esi (статус: 1-ый класс)
Ответ отправлен: 19.05.2007, 19:56 Оценка за ответ: 4 Комментарий оценки: Спасибо, но такой ответ уже был
Отвечает: Виктор Пырлик
Здравствуйте, Иван Ивановввв!
Используйте функцию FileExists
Приложение:
--------- Надо пребывать господа, пребывать! Иначе ничего не получится!
Ответ отправил: Виктор Пырлик (статус: 3-ий класс)
Ответ отправлен: 21.05.2007, 06:33 Оценка за ответ: 5
Отвечает: Elpher2006
Здравствуйте, Иван Ивановввв!
procedure TForm1.BtnOpenClick(Sender:TObject);
begin
if OpenDialog1.Execute then
begin
if FileExists(OpenDialog1.FileName) then
begin
//Здесь код, открывающий файл
end;
end;
end;
--------- Не делай другим того, чего сам не хочешь испытать!
Ответ отправил: Elpher2006 (статус: 1-ый класс)
Ответ отправлен: 21.05.2007, 06:42 Оценка за ответ: 5
Отвечает: Примак Руслан Николаевич
Здравствуйте, Иван Ивановввв!
Для проверки наличия файла применяется FileExists(FileName)
Вот пример из справки по Delphi
procedure TMyRDM.Provider1AfterUpdateRecord(Sender: TObject; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind);
const
SP = ' ';
var
logfile: TextFile;
begin
AssignFile(logfile,'log.txt');
if not(FileExists('log.txt')) then ReWrite(logfile)
else Append(logfile);
writeln(logfile,(UserName+SP+DateToStr(Date)+SP+TimeToStr(Time)+SP+
DeltaDS.Name));
end;
Ответ отправил: Примак Руслан Николаевич (статус: 1-ый класс)
Ответ отправлен: 21.05.2007, 13:25
Вопрос № 87.645
Здраствуйте эксперты.
У меня вопрос, как можно впихнуть в EXE ресурс(другой файл, например .doc .txt) и как потом во время роботы программы его открыть (прочитать)?
Спасибо за ответы.
Чтобы не давать одинаковые ответы со своей стороны за короткий промежуток времени, то просто Вам рекомендую прочитать мой ответ на вопрос №87500.
Дополню также ответ ссылкой на страницу на которой описана работа с ресурсами: # 16 и 32-битные RES-файлы
# 256-цветное изображение из res-файла
# GIF для HTML в EXE
# WAV в EXE
# Включение JPEG в EXE-файл
# Включение JPEG в EXE-файл 2
# Включение wav-файла в exe и проигрывание этого wav-файла
# Включение шрифта как ресурс в EXE
# Вставить программу внутрь EXE файла
# Добавить EXE файл в своё приложение и запустить его
# Загрузить RTF текст из файла ресурса в TRichEdit
# Загрузить RTF файл из ресурса своего EXE
и не только...
Ну и на последок прикрепляю файл с готовым проектом в котором в качестве ресурсов используются графические, текстовые и ехе-файлы.
Good Luck!!!
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 19.05.2007, 18:48 Оценка за ответ: 5
Отвечает: Примак Руслан Николаевич
Здравствуйте, Иван Ивановввв!
В Delphi7 через Меню "Project"->"Resources"->"New"->"User Data" и добавляете любой файл.
А для работы с таким ресурсом необходимо использовать TResourceStream.
Ответ отправил: Примак Руслан Николаевич (статус: 1-ый класс)
Ответ отправлен: 21.05.2007, 13:20
Вопрос № 87.660
Подскажите пожалуйста, как загрузить и сохранить на диске определенную страницу из интернет консольным приложением
Формально - также как и не консольным без использования готовых компонент:
1. Использовать WinSock API и создать сокет (об этом есть много статей и книг)
2. Соединиться по HTTP протоколу к нужному URL
3. Сохранить полученные данные
Но это только верхняя часть айсберга. Ведь кроме самой страницы еще могут понадобиться картинки, звуки, видео, флеши и т.п., тут уже придется парсить страницу и извлекать нужные данные и снова запрашивать их по HTTP - т.е. писать некий простой браузер (а если еще и скрипты в странице, то это еще целый пласт)
Возможно, более простым способом будет использовать"псевдоконсольное" приложение и скрытно грузить страницу в Web-компонент, а оттуда на диск. Или еще вариант - запускать консольным приложением другое - неконсольное, но невидимое и в нем проделывать все операции.
Ответ отправил: PGM (статус: 7-ой класс)
Ответ отправлен: 20.05.2007, 23:35
Вопрос № 87.677
День добрый, Уважаемые эксперты!!!
Создаю динамически форму, на ней главное меню. если написать строку 'Form1.ParentWindow:=GetDesktopWindow;', то меню не отображается. В чем ошибка.
Строка нужна.
Отвечает: Ерёмин Андрей
Здравствуйте, Ренат Байрамгулов!
Попробуйте заново подключить меню к окну, предварительно отключив его. Собственно, в вашем коде я вообще не вижу строки, где меню подключается. Так делать можно, но это ненадёжно. При создании TMainMenu меню на форме оно автоматически становится главным меню для этого окна. Так запрограммирован компонент. Но при любых изменениях меню нужно обновлять. Сделать нужно так: Form1.Menu:=nil;
Form1.Menu:=MM;
Добавить это, соответственно, нужно после изменения предка формы. Должно сработать.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Здраствуйте эксперты.
У меня такой вопрос: я записываю программу А в реестр, HKEY_LOCAL_MACHINE и т. д. из програмы Б. Как из этой же программы Б, запустить програму А? (может ShellExecute, но тогда как найти путь к этому реестру?)
И еще маленький вопрос, как средствами Delphi удалить файл?
Всем спасибо за ответы.
with TRegistry.Create do
try
RootKey:= HKEY_LOCAL_MACHINE;
OpenKey('SoftwareProgram A', True);
{Записываем в реестр путь к программе А}
WriteString('Path', Application.ExeName);
CloseKey; finally
Free; end;
Программа Б читает из реестра местонахождение программы А и запускает ее:
var
{Переменная, которая будет хранить путь к программе А}
PathA: String;
begin
with TRegistry.Create do
try
RootKey:= HKEY_LOCAL_MACHINE; if not OpenKeyReadOnly('SoftwareProgram A') then
begin
ShowMessage('Не могу найти программу А');
Exit; end;
PathA:= ReadString('Path');
CloseKey; finally
Free; end;
{Запуск программы А}
WinExec(PChar(PathA), SW_NORMAL); end;
Для выполнения этих двух кусков кода в uses необходимо прописать модуль Registry.
Для удаления файла средствами Delphi, воспользуйтесь функцией DeleteFile. Пример:
{FileName - переменная типа String, которая хранит путь к файлу, подлежащему удалению}
{Сначала производится операция проверки существования файла} if not FileExists(FileName) then
begin
ShowMessage('Файл "' + FileName + '" не найден.');
Exit; end;
{Удаление файла} if not DeleteFile(FileName) then
ShowMessage('Не могу удалить файл "' + FileName + '"') else
ShowMessage('Файл "' + FileName + '" успешно удален.');
- из этого примера можно оставить один только DeleteFile(FileName); и не оповещать пользователя о производимых действиях (т.е. удалять тихо).
Удачи!
Ответ отправил: Denisss (статус: Профессионал) Россия, Москва WWW:Хлама много, по сути ничего... ---- Ответ отправлен: 20.05.2007, 14:43 Оценка за ответ: 5
Отвечает: Gh0stik
Здравствуйте, Иван Ивановввв!
Для удаления файла достаточно использовать такую не сложную процедуру:
var FileName:String;
begin
FileName:='C:2.exe'; //имя файла который необходимо удалить
if FileExists(FileName) then
if MessageDlg('Вы действительно хотите удать файл '+ExtractFileName(FileName)+'?', mtConfirmation, [mbYes, mbNo], 0)=IDYes then
DeleteFile(FileName);
end;
Чтобы добыть текстовые данные из реестра рекомендую Вам воспользоваться функцией ReadString() из модуля Registry. (uses Registry).
Пример использования - также здесь показано и как сразу запустить файл на исполнения, путь к файлу читается из реестра:
procedure TForm1.Button2Click(Sender: TObject);
var reg: TRegistry;
begin
reg:=TRegistry.Create;
with reg do
begin
RootKey:=HKEY_LOCAL_MACHINE;
if KeyExists('SOFTWAREMyProg') then
begin
OpenKey('SOFTWAREMyProg',false);
ShellExecute(Handle,'open',PChar(ReadString('Path')),'','',0); //запускаем файл (программу Б) - не забудьте конечно и про uses ShellApi;
CloseKey;
end
else ShowMessage('Key is not find!!!');
Free;
end;
end;
В приложении полный код модуля в котором есть запись, чтение из реестра, а также удаление конкретного файла. Каждый блок описан в отдельной процедуре.
Good Luck!!!
Приложение:
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 20.05.2007, 14:51 Оценка за ответ: 5
Отвечает: Gsa
Здравствуйте, Иван Ивановввв!
==========================
Ответ перенесен в мини-форум
==========================
Ответы в подобном стиле следует писать в мини-форум, если Вам не понятен вопрос то задайте уточняющий, либо спросите через внутреннюю почту у вопрошающего.
-~= Gh0stik =~-
Ответ отправил: Gsa (статус: 5-ый класс)
Ответ отправлен: 20.05.2007, 15:04 Оценка за ответ: 4 Комментарий оценки: Просто нужно совместить следуещее: -записать программу в реестр -и сразу ее запустить(а она то находиться в реестре)
Вопрос № 87.749
Добрый день, уважаемые эксперты. Дельного Ответа на предыдущий вопрос я, к сожалению, так и не получил. Хотелось бы задать его еще раз. Для данного алгоритма (приложение) поиска самого длинного предложения во введенном текста хочу спросить: как это найденное предложение, в соответствии с условиями программы, выделить? Заранее спасибо.
Немножко изменил Ваш алгоритм и добавил выделение.
Что мне не понравилось в Вашем алгоритме: 1. Первое предложение, в любом случае, заканчивается знаком вопроса. Т.о. может получиться, что первое найденное предложения будет включать несколько предложений. Иными словами, есть ошибки в алгоритме. 2. Строчка s:=mtext.lines.text; копирует весь текст Memo в память, что может несколько затормозить процесс поиска, да и увеличить размер занимаемой памяти приложением, особенно если текста введено пользователем достаточно много. 3. Алгоритм поиска не совсем понятный. (Хотя признаю, у меня не намного понятнее ;-) ).
Что понравилось: 1. Небольшой размер кода. Это улучшает читаемость текста программы, упрощает поиск ошибок в коде.