![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Тот же текстовый редактор. Теперь сохранение :-) [D7, WinXP]
Apocalepse © (2004-06-11 20:45:00)Товарищи мастера я все по той же теме :-)
Проблеммка собственно в том как теперь сохранять изменения в файле!
То есть сохранение изменений в файле открытых уже в редакторе то
конечно не проблема. Но вот я не могу понять как теперь сохранить файл
открытый самим редактором через вот тот код:
if (ParamCount >= 1) and FileExists(ParamStr(1)) then
Memo.Lines.LoadFromFile(ParamStr(1));
На кнопке "сохранить" у меня висит
Memo1.Lines.SaveToFile(FName);
Я дописываю к тому
if (ParamCount >= 1) and FileExists(ParamStr(1)) then
Memo.Lines.SaveToFile(ParamStr(1));
Но ничего не выходит, все компилится. Но изменения не сохраняются. Подскажите что не так?
KilkennyCat (2004-06-11 23:18:00) [1]
> Apocalepse © (11.06.04 23:11) [20]
> присвоить? Что присвоить? Что вообще есть (ParamStr(1))
> я честно говоря не понял....
При запуске исполняемого файла с параметрами (например: format c: ), то программе передаются параметры, в нашем случае - с:
Даже если перевести ParamStr то получится ПараметровСтрока
Apocalepse (2004-06-11 23:18:00) [2]Мои подстаканники дребезжат! Спасибо тебе!!! Огромное. А кто упел раньше тебя и что успел? Ну да ладно хорош флудить ато замодерируют нафиг :-). Еще раз Большое спасибо!
KilkennyCat (2004-06-11 23:14:00) [3]ну, вот, успел раньше меня :)
KilkennyCat (2004-06-11 23:13:00) [4]Знаю.
Правило первое - перед использованием переменной, ей надо чего-то присвоить. Иначе - неизвестно, чего в ней есть. При открытии диалогами FName чего-то там нормально получает, после чего ее корректно обрабатывают сэйвы. При открытии через параметр, она, судя по всему, ничего не получает, в ней либо ниль, либо каша, однако, при сохранении она используется!
Странно, что компилятор не предупредил...
Вообщем, должно быть так:
procedure Tmain.FormCreate(Sender: TObject);
begin
if (ParamCount > 1) and FileExists(ParamStr(1)) then begin
FName := ParamStr(1);
Text.Lines.LoadFromFile(FName);
end;
end;
Apocalepse (2004-06-11 23:12:00) [5]
> пофиг опечатка.
> где код типа такого:
> FName := ParamStr(1); ?
(Меня пробирает смех над собой) Его нет :-( Какой же я дурак!
Apocalepse (2004-06-11 23:11:00) [6]ООО я кажеться понял! Надо при открытии с Text.Lines.LoadFromFile(ParamStr(1)) ???? Присвоить ей значение и все будет ок! Только как его присвоить? Что присвоить? Что вообще есть (ParamStr(1)) я честно говоря не понял....
Apocalepse (2004-06-11 23:08:00) [7]ээээээ вроде ничего... Я что то путанулся уже. Я в Дельфи навичек. Может скажеш все же конкретнее как сохранить? Ты ведь знаеш :-)
KilkennyCat (2004-06-11 23:06:00) [8]пофиг опечатка.
где код типа такого:
FName := ParamStr(1); ?
Apocalepse (2004-06-11 23:05:00) [9]Блин опечетался ^^
> FNmae объявляется вот тут
FName объявляется вот тут - так надо было написать :-)
KilkennyCat (2004-06-11 23:05:00) [10]замечательно. но я спрашивал, что ей присваивается, когда открывается с Text.Lines.LoadFromFile(ParamStr(1)) ????
Apocalepse (2004-06-11 23:03:00) [11]FNmae объявляется вот тут
SaveDialog.FileName:=FName;
if SaveDialog.Execute
then begin
FName:=SaveDialog.FileName;
и тут
FName:=OpenDialog.FileName;
Это переменная являющаяся по сути FileName Open и Save Dialog-ов
KilkennyCat (2004-06-11 23:03:00) [12]Повторю свой вопрос... что сие - FName? Чего ему присваивается при открытии с параметрами командной строки?
Apocalepse (2004-06-11 23:01:00) [13]Я не спрашиваю про сохранение файла открытого OpenDialog или сохраненным SaveDialog
Мне надо узнать что нужно дописать к кнопке "сохранить" чтобы сохранить изменения в файле открытым моей программой. Т.е. кодом
procedure Tmain.FormCreate(Sender: TObject);
begin
if (ParamCount > 1) and FileExists(ParamStr(1)) then
Text.Lines.LoadFromFile(ParamStr(1));
if rb_html.Checked = true then
begin
Text.SyntaxStyles:=stl_html; //Это относится к синтаксису.
end;
end;
KilkennyCat (2004-06-11 23:00:00) [14]Может быть, я полный ЛМД, но что такое FName?
Apocalepse (2004-06-11 22:56:00) [15]Какие вам еще подробности?
Ну вот код висящий на кнопке сохранения
procedure Tmain.saveClick(Sender: TObject);
begin
Text.Lines.SaveToFile(FName);
if (ParamCount > 1) and FileExists(ParamStr(1)) then
Text.Lines.SaveToFile(ParamStr(1));
end;
На форе есть OpenDialog и SaveDialog
Вот так выглядит кнопка "сохранить как"
procedure Tmain.save_asClick(Sender: TObject);
begin
SaveDialog.FileName:=FName;
if SaveDialog.Execute
then begin
FName:=SaveDialog.FileName;
Text.Lines.SaveToFile(FName);
end;
end;
Text-имя поля Memo
FName-OpenDialog(FileName) и SaveDialog(FileName)
Anatoly Podgoretsky (2004-06-11 22:23:00) [16]Все ясно у тебя неправильный путь.
Подробности вроде мы никогда не получим, ну и бог ним, поработаем тогда переводчиками.
Apocalepse (2004-06-11 22:10:00) [17]Да моя опечатка! Там имена то мои у Memo но в коде допустим пусть они будут кака Memo1. Все компилится нормально но при сохранении файла открытого способом
if (ParamCount >= 1) and FileExists(ParamStr(1)) then
Memo1.Lines.SaveToFile(ParamStr(1));
Возникает ошибка:
Cannot Create File "". Системе неудается найти указаный путь.
Ну короче кода сохранения вообще нет как будь то.
Подкрадуха (2004-06-11 21:54:00) [18]Угу, чего ж тут гадать, если не видно, что за ошибка или хотя бы полный код этой функции/процедуры.
Подождём...
Anatoly Podgoretsky (2004-06-11 21:50:00) [19]Подкрадуха © (11.06.04 21:43) [6]
Нет сохраняется в обеих, но только не известно что в FName и в ParamStr(1)
Подкрадуха (2004-06-11 21:43:00) [20][5]
Я этого и не отрицаю, но читается файл в одного мемо, а сохраняется из другого. Я даже предположу (настрою, так сказать свой телепатический модуль), что в начале файл читается сразу в оба мемо, но потом пишется измененное мемо вначале и потом перезаписывается вторым (не измененным) мемо. Может отсюда грабли ростут?