Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2013, 00:17   #1
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Восклицание сохранить текстовый файл, который загружен в мемо поле (загрузка файла- есть код) Делфи 7

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

вот задание, которое уже сделано:
загрузить текстовый файл (блокнот) в мемо поле.

вот код программы:
PHP код:
unit Unit45;
interface
uses
  Winapi
.WindowsWinapi.MessagesSystem.SysUtilsSystem.VariantsSystem.ClassesVcl.Graphics,
  
Vcl.ControlsVcl.FormsVcl.DialogsVcl.StdCtrlsVcl.ComCtrlsData.DB,
  
Bde.DBTablesVcl.GridsVcl.DBGrids;
type
  TForm45 
= class(TForm)
    
PageControl1TPageControl;
    
TabSheet1TTabSheet;
    
TabSheet2TTabSheet;
    
Memo1TMemo;
    
OpenDialog1TOpenDialog;
    
SaveDialog1TSaveDialog;
    
TabSheet3TTabSheet;
    
Button1TButton;
    
DBGrid1TDBGrid;
    
Memo2TMemo;
    
Button2TButton;
    
procedure Button1Click(SenderTObject);
    
procedure Button2Click(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;
var
  
Form45TForm45;
   
f:textfiles:stringi:integer;
implementation
{$R *.dfm}
procedure TForm45.Button1Click(SenderTObject);
begin
opendialog1
.Filter:='Textovie faili| *.txt|';
   if 
opendialog1.Execute and fileExists (opendialog1.FileNamethen
     begin
     assignfile
(f,opendialog1.FileName);
     
reset(f);
     
memo1.Lines.Clear;
     while 
not eof(f) do
          
begin
       readln
(f,s);
       
memo1.Lines.Add(s);
     
end;
     
closefile(f);
   
end;
end;
procedure TForm45.Button2Click(SenderTObject);
begin
 opendialog1
.Filter:='Textovie faili| *.txt|';
   if 
opendialog1.Execute and fileExists (opendialog1.FileNamethen
     begin
     assignfile
(f,opendialog1.FileName);
     
reset(f);
     
memo2.Lines.Clear;
     while 
not eof(f) do
          
begin
       readln
(f,s);
       
memo2.Lines.Add(s);
     
end;
     
closefile(f);
   
end;
end;
end
задание, которое нужно сделать:
сохранить текстовый файл,который загружен в мемо поле.
(вроде нужно делать с помощью SaveDialog)


заранее огромное спасибо всем за помощь.
программирование вне форума Ответить с цитированием
Старый 22.11.2013, 00:36   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Вы совершенно зря используете старинные методы чтения файлов..
рекомендую заменить вот этот код:
Цитата:
Код:
if opendialog1.Execute and fileExists (opendialog1.FileName) then
     begin
     assignfile(f,opendialog1.FileName);
     reset(f);
     memo1.Lines.Clear;
     while not eof(f) do
          begin
       readln(f,s);
       memo1.Lines.Add(s);
     end;
     closefile(f);
   end;
на код:
Код:
if opendialog1.Execute and fileExists (opendialog1.FileName) then
   Memo1.Lines.LoadFromFile(opendialog1.FileName)
ну и со второй кнопкой поступить так же.


а сохранение написать очень просто. на форму кидаем TSaveDialog
и пишем что-то вроде:
Код:
rocedure TForm45.ButtonSave1Click(Sender: TObject);
begin
   SaveDialog1.Filter:='Textovie faili| *.txt|';
   if SaveDialog1.Execute and  then
     memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;
и ВСЁ!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.11.2013, 00:50   #3
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Вопрос куда записать процедру

Serge_Bliznykov, а для того,чтобы написать эту процедуру нужно кликнуть на SaveDialog, а затем в коде писать код?

но когда я дважды нажимаю на SaveDialog, то у меня открывается все мои файлы.
программирование вне форума Ответить с цитированием
Старый 22.11.2013, 00:54   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от программирование Посмотреть сообщение
Serge_Bliznykov, а для того,чтобы написать эту процедуру нужно кликнуть на SaveDialog, а затем в коде писать код?
нет.
вам нужно кинуть на форму кнопку ( в моём примере я назвал эту кнопку ButtonSave1, но Вы можете ей дать любое удобное для вас имя), потом двойной щелчок по этой кнопке, откроется обработчик события onClick для данной кнопки. вот туда и надо вставить указанный мною выше код.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.11.2013, 00:54   #5
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Вопрос подчеркивает ошибку

я скопировала процедуру, но у меня подчеркивает ошибку.
вот код:
PHP код:
unit Unit45;
interface
uses
  Winapi
.WindowsWinapi.MessagesSystem.SysUtilsSystem.VariantsSystem.ClassesVcl.Graphics,
  
Vcl.ControlsVcl.FormsVcl.DialogsVcl.StdCtrlsVcl.ComCtrlsData.DB,
  
Bde.DBTablesVcl.GridsVcl.DBGrids;
type
  TForm45 
= class(TForm)
    
PageControl1TPageControl;
    
TabSheet1TTabSheet;
    
TabSheet2TTabSheet;
    
Memo1TMemo;
    
OpenDialog1TOpenDialog;
    
SaveDialog1TSaveDialog;
    
TabSheet3TTabSheet;
    
Button1TButton;
    
DBGrid1TDBGrid;
    
Memo2TMemo;
    
Button2TButton;
    
Button3TButton;
    
procedure Button1Click(SenderTObject);
    
procedure Button2Click(SenderTObject);
    
procedure Button3Click(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;
var
  
Form45TForm45;
   
f:textfiles:stringi:integer;
implementation
{$R *.dfm}
procedure TForm45.Button1Click(SenderTObject);
begin
opendialog1
.Filter:='Textovie faili| *.txt|';
   if 
opendialog1.Execute and fileExists (opendialog1.FileNamethen
     begin
     assignfile
(f,opendialog1.FileName);
     
reset(f);
     
memo1.Lines.Clear;
     while 
not eof(f) do
          
begin
       readln
(f,s);
       
memo1.Lines.Add(s);
     
end;
     
closefile(f);
   
end;
end;
procedure TForm45.Button2Click(SenderTObject);
begin
 opendialog1
.Filter:='Textovie faili| *.txt|';
   if 
opendialog1.Execute and fileExists (opendialog1.FileNamethen
     begin
     assignfile
(f,opendialog1.FileName);
     
reset(f);
     
memo2.Lines.Clear;
     while 
not eof(f) do
          
begin
       readln
(f,s);
       
memo2.Lines.Add(s);
     
end;
     
closefile(f);
   
end;
end;
 
procedure TForm45.Button3Click(SenderTObject);
begin
 SaveDialog1
.Filter:='Textovie faili| *.txt|';
   if 
SaveDialog1.Execute and  then
     memo1
.Lines.SaveToFile(SaveDialog1.FileName);
end;
end
ошибка в строчке:
PHP код:
 if SaveDialog1.Execute and  then 
выдает такую ошибку:
Цитата:
if SaveDialog1.Execute and then
заранее огромное спасибо всем за помощь.
программирование вне форума Ответить с цитированием
Старый 22.11.2013, 07:17   #6
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
and
удалите
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием