Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   [Delphi]/[Pascal] Задай вопрос, получи ответ (https://forum.antichat.xyz/showthread.php?t=39636)

Piflit 18.05.2007 19:20

и первый вопрос. создание блокнота. какой должен быть тип возвращаемого функцией значения, если функция сохраняет файл?
второй вопрос: если создан новый текстовой файл (а не открыт существующий), то при попытке save
Код:

MainMemo.Lines.SaveToFile(FName);
вылетает ошибка. FName появляется после использования OpenDialog.
Код:

if OpenDialog1.Execute then
begin     
  FName:=OpenDialog1.FileName;
  MainMemo.Lines.LoadFromFile(FName);   
end;

я хочу решить эту проблему с помощью проверки на существование FName и функции, сделанной из обработчика SaveDialog
Код:

begin
  SaveDialog1.FileName:=FName; 
  if SaveDialog1.Execute then   
      begin     
        FName:=SaveDialog1.FileName;
        MainMemo.Lines.SaveToFile(FName);   
      end; 
end;

может есть какое-то более правильное решение? если да, на вопрос номер 1 просьба все равно ответить.
ЗЫ помогаюсь книжкой Архангельского "100 компонентов общего назначения библиотеки Delphi 5"
ЗЫЫ to begin end ;)

anarсhist 18.05.2007 20:02

Цитата:

Сообщение от begin end
... напиши блокнот, калькулятор, проводник, Интернет-браузер, редактор типа WordPad и медиаплеер в этой последовательности...

Когда-то еще в школе писал нечто на подобее вордпада, потом резко забил... вобщем была небольшая проблемка :
передача редактору имени файла при открытии через проводник (пр. кн. мыши - откр. с помощью - мой редактор)

стыдно, но до сих пор не наю как ето сделать =(

hidden 18.05.2007 20:18

Цитата:

Сообщение от Piflit
и первый вопрос. создание блокнота. какой должен быть тип возвращаемого функцией значения, если функция сохраняет файл?

У неё нет возвращяемого значения, это процедура. Для проверки на ошибку используй try except end;

Цитата:

Сообщение от Piflit
второй вопрос: если создан новый текстовой файл (а не открыт существующий), то при попытке save

Код:

var
  Form1: TForm1;
  FName : String = 'Untinled.txt';

Цитата:

Сообщение от anarсhist
Когда-то еще в школе писал нечто на подобее вордпада, потом резко забил... вобщем была небольшая проблемка :
передача редактору имени файла при открытии через проводник (пр. кн. мыши - откр. с помощью - мой редактор)

стыдно, но до сих пор не наю как ето сделать =(

Код:

procedure TForm1.FormCreate(Sender: TObject);
begin
  FName:=ParamStr(1);
  if(FileExists(FName)) then MyNotepadOpenFile(FName);
end;


Piflit 18.05.2007 20:49

Цитата:

Сообщение от hidden
У неё нет возвращяемого значения, это процедура.

напиши пример плз

hidden 18.05.2007 21:00

Цитата:

Сообщение от Piflit
напиши пример плз

Код:

  try
    Memo1.Lines.SaveToFile(FName);
  except
    // Сюда перейдёт только если произойдёт ошибка
  end;


Piflit 18.05.2007 21:07

я имел в виду немного не то. сам код ошибки должен откуда-то браться. и этот же самый код должен быть в процедуре save as. то есть я не хочу два раза писать один и тот же код, а загнать его в функцию. и меня интересует оформление функции. ты написал ее содержание.

и еще вопрос. можно осуществлять печать с Memo? или только с RichEdit?

anarсhist 18.05.2007 21:44

Цитата:

и еще вопрос. можно осуществлять печать с Memo? или только с RichEdit?
Код:

uses Printers;

procedure PrintTxt(Strings: TStrings);
var
f: TextFile;
i: word;
begin
AssignPrn(f);
try
Rewrite(f);
try
for i := 0 to Strings.Count - 1 do
writeln(f, Strings.Strings[i]);
finally
CloseFile(f);
end;
except
on EInOutError do
MessageDlg('oшибка печати', mtError, [mbOk], 0);
end;
end;

для мемо дальше делаешь: printtxt(memo1.lines)


hidden 18.05.2007 22:32

Цитата:

Сообщение от Piflit
я имел в виду немного не то. сам код ошибки должен откуда-то браться. и этот же самый код должен быть в процедуре save as. то есть я не хочу два раза писать один и тот же код, а загнать его в функцию. и меня интересует оформление функции. ты написал ее содержание.

Я непонимаю что собственно тебе надо в этом вопросе, вот посмотри пример простейшего редактора тут: \Borland\Delphi7\Demos\Clx\BasicEd\*

Цитата:

Сообщение от Piflit
и еще вопрос. можно осуществлять печать с Memo? или только с RichEdit?

Код:

use QPrinters;
var prn : TPrinter;
prn := TPrinter.Create;
prn.BeginDoc;
prn.Canvas.TextOut( ... );
prn.EndDoc;

Да поможет тебе F1 ;)

Piflit 18.05.2007 22:42

Цитата:

Я непонимаю что собственно тебе надо в этом вопросе, вот посмотри пример простейшего редактора тут: \Borland\Delphi7\Demos\Clx\BasicEd\*
походу я сам немного запутался. мне нужно, чтобы были кнопки save и save as. в борландовском примере только вторая. а может save и не надо?

hidden 18.05.2007 22:49

Цитата:

Сообщение от Piflit
походу я сам немного запутался. мне нужно, чтобы были кнопки save и save as. в борландовском примере только вторая. а может save и не надо?

Обязательно нужна, я когда пользуюсь редактором нажимаю её по 2 раза в минуту :D
При нажатии Save, проверь, если файл не существует, тогда передай управление обработчику SaveAs, иначе просто сохрани.


Время: 23:58