Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 35

Сделать загрузку инфы из файла без нажатия на кнопку

21.05.2022, 16:21. Показов 1584. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Бьюсь уже второй день, не могу реализовать одну идею.
Исходные данные: есть кнопка, есть TMemo, есть файл txt с одним числом.
Необходимо:
1. При вводе числа в моле TMemo и нажатие на кнопку записывать его в файл txt (это я реализовал)
2. При запуске программы, число из файла txt должно подгружаться в форму TMemo и там оно должно быть видно (не могу сделать)

Вот такой код имею:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile(f,'memory.cfg');
Rewrite(f);
write(f, memory.text);
closefile(f);
end;
 
procedure TForm1.MemoryChange(Sender: TObject);
begin
AssignFile(f,'memory.cfg');
Reset(f);
read(f,s);
memory.text:=s;
closefile(f);
end;
Постоянно ругается на closefile в 15 строке и число не подгружается. В форме постоянно высвечивается название самой формы, а не число из txt файла.
Помогите решить эту головоломку.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.05.2022, 16:21
Ответы с готовыми решениями:

Сделать загрузку инфы из файла без нажатия на кнопку
Добрый день! Бьюсь уже второй день, не могу реализовать одну идею. Исходные данные: есть кнопка, есть TMemo, есть файл txt с одним...

как сделать чтобы калькулятор считал автоматически без нажатия на кнопку
помогите кто может.как сделать чтобы калькулятор считал автоматически без нажатия на кнопку расчитать. <Script...

После нажатия на кнопку TBitBtn сделать кнопку не действующей
Как после нажатия на кнопку bitbtn1 кнопка становилась не действушей

32
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 35
22.05.2022, 17:31  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Gluck99 Посмотреть сообщение
Я надеюсь, вы ещё хотели сделать блокировку ввода нечисловых значений в Memo. Иначе пользователь введёт "мама мыла раму", и ваша программа обесточит целый микрорайон.
Можно, конечно, сделать такую блокировку, и я думал на эту тему, но это надо еще приложить кучу усилий по изучению данного предмета. Однако, с такими помощниками, как здесь, я даже могу справиться. ))

Цитата Сообщение от Verevkin Посмотреть сообщение
3 Гб = 3072 Мб.
Если я напишу такое, то те, на кого ориентирована программа, а это возраст 10-15 лет, утонут в расчетах с калькулятором захотев перевести не 1 Гб в мегабайты, а 1,3 Гб )))
В моем сообществе Дискорд, все кто мало-мальски связан с программированием, тоже высмеяли эту надпись. Им я там шутя ответил, что не нужно быть перфекционистами. Программа прекрасно работает и с 3000 Мб. )
0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
22.05.2022, 17:59
Цитата Сообщение от ipv2007 Посмотреть сообщение
надо еще приложить кучу усилий по изучению данного предмета
Это делается в одну строчку за примерно 1 минуту.
1) Выделяете своё Memo, переходите в инспектор объектов (Object Inspector -> Events) и находите там событие OnKeyPress. Щёлкаете двойным кликом по нему.
2) Откроется редактор кода с созданным обработчиком события. Туда пишите такой код, между begin и end:
Delphi
1
if not (Key in ['0'..'9', #8]) then Key := #0;
0
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 35
22.05.2022, 18:09  [ТС]
Цитата Сообщение от Gluck99 Посмотреть сообщение
Это делается в одну строчку за примерно 1 минуту.
Спасибо еще раз, добавил. Все работает )
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,498
22.05.2022, 19:21
ipv2007, что там вообще делает TMemo - не понятно. Это же многострочный редактор. Тут достаточно однострочного редактора TEdit.
Кроме этого, есть ещё варианты:
1. Можно не ограничивать ввод только чисел, а попытаться перевести в число:
Delphi
1
2
3
4
5
6
7
8
9
10
var
  i: integer;
begin
  if TryStrToInt(Edit1.Text, i) and (i > 0) then
  begin
    // Здесь делаем, что нужно
  end
  else
    ShowMessage('Введите целое число, больше 0');
end;
2. Можно заменить TEdit на TSpinEdit, который уже рассчитан на ввод только целых чисел.
0
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 35
22.05.2022, 21:11  [ТС]
А вот такой вопрос.
Я запускаю свою программу, она лезет в интернет и качает из интернета картинку и после ее автоматически выводит в моей программе.
Вот этот код позволяет ее загружать только по нажатию на клавишу. А как сделать, чтобы это делалось без нажатия на клавишу? Я у картинки не могу найти событие для этих целей.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
  try
    Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
  except
    Result := False;
  end;
end;
 
procedure TForm1.Image1Click(Sender: TObject);
const
SourceFile = 'http://auto.ru/launcher.jpg';
DestFile = 'images\launcher.jpg';
begin
   if DownloadFile(SourceFile, DestFile) then
   begin
     Image1.Picture.LoadFromFile('images\launcher.jpg');
   end
   else
     ShowMessage('Не удалось загрузить' + SourceFile)
end;
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,498
22.05.2022, 21:22
Может, туда же, в OnCreate формы добавить этот код?
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,616
22.05.2022, 21:33
Цитата Сообщение от ipv2007 Посмотреть сообщение
Я у картинки не могу найти событие для этих целей
Действительно. Как жаль что у TImage нет события OnChange. А то сейчас была бы вторая серия.
0
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,498
Записей в блоге: 3
23.05.2022, 05:23
Цитата Сообщение от ipv2007 Посмотреть сообщение
А как сделать, чтобы это делалось без нажатия на клавишу?
А когда? В какой момент?
Когда Вы кликаете на объекте ЛКМ - наступает событие OnClick. И если объект умеет реагировать на это событие и программист написал соответствующий обработчик события - будет выполнено какой либо действие. После этого программа остановится и будет ждать наступление очередного события. Так работает событийное программирование.
И если клик на объекте в качестве инициатора события Вас не устраивает - то Вы, как программист, должны определиться, в какой момент должно выполняться действие и что должно произойти в программе/в ОС/в окружающем пространстве/во Вселенной в целом, чтобы этот момент наступил.
Возможно, Вас (как предложил AzAtom) устроит момент старта программы (событие OnCreate главной формы), возможно - Вы думали про что-то совершенно другое, но нам забыли об этом казать, а мы, малахольные, Ваших мыслей прочитать не смогли...
0
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 35
23.05.2022, 20:33  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
И если клик на объекте в качестве инициатора события Вас не устраивает - то Вы, как программист, должны определиться, в какой момент должно выполняться действие и что должно произойти в программе/в ОС/в окружающем пространстве/во Вселенной в целом, чтобы этот момент наступил.
Возможно, Вас (как предложил AzAtom) устроит момент старта программы (событие OnCreate главной формы), возможно - Вы думали про что-то совершенно другое, но нам забыли об этом казать, а мы, малахольные, Ваших мыслей прочитать не смогли...
Как же не смогли прочитать, если я написал свои мысли черным по белому? )))
Вот они.
Цитата Сообщение от ipv2007 Посмотреть сообщение
Я запускаю свою программу, она лезет в интернет и качает из интернета картинку и после ее автоматически выводит в моей программе.
Т.е. я хочу реализовать загрузку картинки в момент загрузки программы (автоматически), без клика.
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,498
23.05.2022, 20:57
ipv2007, так уже был ответ: Добавить загрузку файла "memory.cfg" в OnCreate формы. Разве нужно ещё раз подсказывать, куда добавить код для скачивания картинки при запуске программы?

Добавлено через 1 минуту
Просто по аналогии сделать.
0
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 35
23.05.2022, 22:41  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Просто по аналогии сделать.
Да, вот только сделал. Просто у меня голова искала более простой выход. Я думал, почему нельзя было добавить событие картинке OnCreate...
В общем, спасибо всем еще раз, я добился то, чего хотел. )
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,616
24.05.2022, 00:18
Цитата Сообщение от ipv2007 Посмотреть сообщение
почему нельзя было добавить событие картинке OnCreate
А в этом нет никакого особого смысла. А если подумать, то понимаешь что нет никакого смысла делать обработчик такого события и всем прочим компонентам. Если компоненты брошены на форму в дизайн-тайм, то достаточно использовать OnCreate формы, которой этот компонент принадлежит (тем более что в нем можно сделать необходимые действия сразу с несколькими компонентами). А если компонент создан в ран-тайме, то такой обработчик вообще не имеет смысла. Так что в классике такой обработчик есть только у TCustomForm и TDataModule. Т.е. у "контейнеров компонент".
0
24.05.2022, 04:11

Не по теме:

Цитата Сообщение от ipv2007 Посмотреть сообщение
если я написал свои мысли черным по белому? ... Я запускаю свою программу, она лезет в интернет...
Я уже понял, что проблема решена, поэтому просто скажу: Когда Вы "запускаете свою программу" возникает, как минимум, 5 событий. Так когда программе "лезть в интернет": в момент создания? в момент показа главной формы? в момент активации? Ответ на вопрос "Когда?" так и не был Вами дан... Но раз устроил момент создания - то и слава богу...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.05.2022, 04:11

По событию нажатия на кнопку вызвать функцию, в которой ждать нового нажатия на ту же самую кнопку
type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender:...

Вызвать событие без нажатия на кнопку
Пишу скрипт на greasemonkey под файрфокс. Код на сайте <tr id="id12"><td>12</td><td><span...

GLUT mouse move без нажатия на кнопку
Можно ли получать данные мышки без зажимания левой кнопки, то есть на постоянную? int main(int argc, char ** argv){ ...

Как занести в базу данные без нажатия на кнопку?
Привет, мир! Мне нужно, при заходе на страницу, отправлять в базу то что содержится в скрытых полях. И это все добро заносить в базу, сразу...

Как вызвать событие Onclick без нажатия на кнопку
суть в чем... имею конструкцию <IMG SRC=http://img.example.ru/i/top2.gif WIDTH=27 HEIGHT=20 ALT name=g_up onclick='GoToNext()'> пишу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru