Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 056

/ вопрос открыт /

Здравствуйте!
Прошу извинения может мой вопрос кому-то и покажется глупым, но знания у меня очень фрагментарные и найти в литературе не могу нигде, ибо кажется не могу саму последовательность действий уяснить.
Итак: Есть две кнопочки. По нажатии одной из поля Мемо3 в масив заносятся строке. Это работает.
И есть вторая кнопочка. По нажатию которой должен создаваться файл из содержимым Поля MemoFinish (которое я буду менять вручную)
Как сделать так чтобы при нажатии кнопки записи файла имя файла бралось каждый раз новое из поля Мемо3 (оно создается один раз).
Если код создания файла поместить у цыкл - все работает.
Файлы создаются, да вот только содержимое у них у всех однаковое. (а оно то как раз и должно браться из поля MemoFinish - которое я буду менять)
Думал счетчик типа q:=q+1 но что-то не придумаю с локальными-глобальными переменными.

Приложение:
  1. procedure TForm1.ButtonWriteClick(Sender: TObject);
  2. var
  3. f: textfile;
  4. begin
  5. q:=q+1;
  6. AssignFile(f,'c:'+name[q]);
  7. ReWrite(f);
  8. Writeln(f, MemoFinish.Text);
  9. CloseFile(f);
  10. end;
  11.  
  12. procedure TForm1.ButtonCrNameClick(Sender: TObject);
  13. const
  14.  
  15. var
  16. n: integer;
  17. q: integer;
  18.  
  19. begin
  20.  
  21. if n=0 then
  22. begin
  23.  
  24. Exit;
  25. end;
  26. if n>size then
  27. begin
  28.  
  29. end;
  30. for q:=1 to n do
  31. name[q]:=Memo3.Lines[q-1];
  32. if n>0 then
  33. begin
  34.  
  35. begin
  36.  
  37. end;
  38. end;
  39. end;


Pokemonchyk Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Pokemonchyk (статус: Посетитель)
Вопрос отправлен: 2 августа 2009, 00:55
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 2 августа 2009, 08:44; участников в обсуждении: 2.
Dron

Dron (статус: Студент), 2 августа 2009, 00:59 [#1]:

Не очень понял, что вам нужно сделать... Сохранить текст из Memo проще всего методом SaveToFile('имя файла'). Если речь о том, чтобы вставить счётчик в имя файла, то здесь два пути: 1) хранить значение счётчика в специальном месте (например, в ini-файле); 2) "на лету" узнавать значение счётчика - в данном случае перебор файлов циклом до тех пор, пока файлы с таким именем существуют.
С уважением.
Pokemonchyk

Pokemonchyk (статус: Посетитель), 2 августа 2009, 01:02 [#2]:

проще говоря мне нужно добавить счетчик сдвига в поле мемо по нажатию кнопки.
Тоесть нажал я раз кнопку - оно в качестве имени файла взяло первую строку поля мемо, нажал еще раз - вторую строку.
Чтобы каждый файл создавался только после нажатия кнопки (ибо я должен еще успевать вставлять текст в поле MemoFinish)
Dron

Dron (статус: Студент), 2 августа 2009, 01:05 [#3]:

В таком случае номер текущей строки нужно хранить где-то во внешней памяти, если этот счётчик должен сохраняться после перезапуска программы. Если же он только на время работы программы - единственная переменная, больше ничего и не нужно. Да и то можно использовать Memo.Tag, чтобы лишнюю переменную не заводить.
С уважением.
Pokemonchyk

Pokemonchyk (статус: Посетитель), 2 августа 2009, 01:15 [#4]:

Мдя... Допозна нельзя сидеть...
Код спростился до:
procedure TForm1.ButtonWriteClick(Sender: TObject);
var
f: textfile;
name: string;
begin
name:=Memo3.Lines[q-1];
AssignFile(f,'c:\'+name);
ReWrite(f);
Writeln(f, MemoFinish.Text);
CloseFile(f);
q:=q+1;
end;

Тоесть заносить в цикл не нужно. В качесте глобальной переменной установил q и присвоил q:=1 при создании формы.
Мдя...
to Dron - спасибо за освежение мозгов ;)
Dron

Dron (статус: Студент), 2 августа 2009, 08:44 [#5]:

Да не за что - обращайтесь :-) А вообще, рекомендую всё же не заводить отдельную переменную - только мешаться будет. MemoFinish.Tag - очень хороший вариант. И сразу видно, что относится именно к MemoFinish.
С уважением.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:59
Выполнено за 0.02 сек.