Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизАналог блокнота Найти похожие ветки
← →
Human © (2010-02-21 15:01) [0]Здравствуйте уважаемые мастера Delphi. Подскажите пожалуйста. Пытаясь написать аналог болокнота Windows, столкнулся с такой проблемой: прописываю пункт меню файл(создать,открыть,сохранить...).Каким образом можно сравнить уже открытый файл в поле Memo1 и тот текст который нужно сохранить? Открываю файлы из OpenDialog.
← →
KilkennyCat © (2010-02-21 15:03) [1]при любом изменении выставлять флаг ЕнтотФайлБылИзменен, в дальнейшем проверять.
← →
Loginov Dmitry © (2010-02-21 15:05) [2]
> Пытаясь написать аналог болокнота Windows, столкнулся
> с такой проблемой
Можно вопрос, зачем писать свои аналоги болокнота Windows?
> Каким образом можно сравнить уже открытый файл в поле Memo1
> и тот текст который нужно сохранить?
Для сравнения в Pascal используется операция "="
← →
Human © (2010-02-21 15:08) [3]А возможно ли сопоставить текст в Memo и открытый файл через память?
← →
Human © (2010-02-21 15:10) [4]Я хочу написать свой текстовый редактор, а блокнот беру за образец.
← →
{RASkov} © (2010-02-21 15:11) [5]> [0] Human © (21.02.10 15:01)
> Каким образом можно сравнить уже открытый файл в поле Memo1
> и тот текст который нужно сохранить?
А разве это не одно и тоже? Зачем это сравнивать?
или нужно сравнить текст в файле на диске с текстом в мемо?
← →
Human © (2010-02-21 15:17) [6]Да именно сравнить текст в Memo с файлом на диске. А еще лучше узнать программно, что находится в Memo.
← →
Anatoly Podgoretsky © (2010-02-21 15:19) [7]> Loginov Dmitry (21.02.2010 15:05:02) [2]
Плох тот программист, который не хочет написать свой блокнот.
← →
KilkennyCat © (2010-02-21 15:30) [8]
> А еще лучше узнать программно, что находится в Memo.
да ладно, программно ненадежно, лучше аппаратно - через сканирование сканером, или на крайний случай - фотоаппаратом.
Memo.text
← →
Юрий Зотов © (2010-02-21 15:45) [9]> Human © (21.02.10 15:01)
1. В обработчике события Memo.OnChange пишете Memo.Modified := True;
2. После создания, открытия и сохранения документа пишете Memo.Modified := False;
Теперь в любом месте программы можно проверить свойство Memo.Modified. Если оно равно False, то текст не изменялся.
← →
Human © (2010-02-21 15:47) [10]Ну а если без смеха, только что пришло в голову решение: обьявить глобальную переменную типа Strings, после открытия файла присвоить ей текст из Memo, а перед сохранением сравнить = текст из Memo и содержание этой переменной. Думал что вы мне подскажете похожее решение(((
← →
Human © (2010-02-21 15:53) [11]Юрий, спасибо за подсказку. А можно ли сравнить через свойство FileName компонентов OpenDialog, SaveDialog?
← →
{RASkov} © (2010-02-21 15:57) [12]> [10] Human © (21.02.10 15:47)
Для чего вообще это сравнение?
Неужели не достаточно свойства Modified? ...о котором ЮЗ говорил
только в OnChange не нужно ничего писать, оно само в true выставится при реджактировании в мемо, а вот в False нужно будет выставлять как им(ЮЗ) сказано во 2м пункте...
← →
{RASkov} © (2010-02-21 15:58) [13]> [11] Human © (21.02.10 15:53)
> А можно ли сравнить через свойство FileName компонентов
> OpenDialog, SaveDialog
что хочешь сравнить? Все тот же текст? Нет, нельзя это сделать через данное свойство.
← →
Loginov Dmitry © (2010-02-21 16:02) [14]
> только что пришло в голову решение: обьявить глобальную
> переменную типа Strings, после открытия файла присвоить
> ей текст из Memo, а перед сохранением сравнить = текст из
> Memo и содержание этой переменной.
А это время какой-нибудь Вася взял да и открыл этот же файл обычным блокнотом и внес изменения :)
← →
Human © (2010-02-21 16:03) [15]Спасибо! Сейчас попробую.
← →
Human © (2010-02-21 16:08) [16]А про Васю я чёт не подумал))
← →
Human © (2010-02-21 16:11) [17]Подскажите пожалуйста, где есть исходники блокнота, только не сильно навёрнутого?
← →
@!!ex © (2010-02-21 16:23) [18]Ты объясни что тебе нужно. Какую задачу решаешь??
← →
Anatoly Podgoretsky © (2010-02-21 16:31) [19]> Human (21.02.2010 16:11:17) [17]
В Демос
← →
Human © (2010-02-21 17:21) [20]@!!ex, я решаю такую задачу: в блокноте для кнопки сохранить есть два варианта - или она сохраняет в уже открытый файл, или сохранённый ранее. Как дать понять программе куда сохранять внесённые изменения?
← →
Palladin © (2010-02-21 17:57) [21]Запомнить имя файла.
← →
Loginov Dmitry © (2010-02-21 18:11) [22]
> открытый файл, или сохранённый ранее
"открытый файл" - он и есть "сохраненный ранее".
В общем не до конца ясно, что именно должна делать эта кнопка.
← →
@!!ex © (2010-02-21 18:13) [23]> [20] Human © (21.02.10 17:21)
Открыть:
FFileName = OpenDialog.FileName;
Сохраненить:
SaveToFile(FFileName);
Сохранить как:
FFileName = SaveDialog.FileName;
SaveToFile(FFileName);
← →
Human © (2010-02-21 18:49) [24]Спасибо. Подскажите пожалуйста, я пишу обработчик для кнопки открыть, происходит следующее: открываю текст, вношу изменения, опять открываю, если на вопрос сохранить или нет отвечаю нет, этот же вопрос выскакивает еще раз. Подскажите, в чем ошибка? Здесь код:
procedure TForm1.N4Click(Sender: TObject);
begin
if Memo1.Modified = true then
begin
MessageBeep(Mb_Iconexclamation);
if MessageDlg("Текст в файле Новый был изменён. Сохранить изменения?",
mtWarning, [mbOk,mbCancel,mbNo],0)= mrCancel then
exit else
if MessageDlg("Текст в файле Новый был изменён. Сохранить изменения?",
mtWarning, [mbOk,mbCancel,mbNo],0)= mrNo then
OpenDialog1.Filter := "Текстовые файлы (*.txt)|*.txt";
if OpenDialog1.Execute and
FileExists(OpenDialog1.FileName)
then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName)else
if MessageDlg("Текст в файле Новый был изменён. Сохранить изменения?",
mtWarning, [mbOk,mbCancel,mbNo],0)= mrOk then
SaveDialog1.Filter := "Текстовые файлы (*.txt)|*.txt";
if SaveDialog1.Execute
then
Memo1.Lines.SaveToFile
(SaveDialog1.FileName + ".txt")
end else
if Memo1.Modified = false then
OpenDialog1.Filter := "Текстовые файлы (*.txt)|*.txt";
if OpenDialog1.Execute and
FileExists(OpenDialog1.FileName)
then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
Memo1.Modified:= false;
end;
← →
Anatoly Podgoretsky © (2010-02-21 18:51) [25]> Human (21.02.2010 17:21:20) [20]
Тогда это почти непригодный редактор, надо еще уметь и создавать файл.
← →
Human © (2010-02-21 18:58) [26]Как именно?
← →
Игорь Шевченко © (2010-02-21 19:46) [27]
> Подскажите, в чем ошибка?
В перекладывании своих проблем на других
> Здесь код:
Это не код, это порнография. Открой любой пример из Demos и посмотри форматирование
← →
@!!ex © (2010-02-21 20:49) [28]> [24] Human © (21.02.10 18:49)
> if MessageDlg("Текст в файле Новый был изменён. Сохранить
> изменения?",
> mtWarning, [mbOk,mbCancel,mbNo],0)= mrCancel then
> exit else
> if MessageDlg("Текст в файле Новый был изменён. Сохранить
> изменения?",
LOL.
Ты понимаешь что пишешь, или чужой код просто вставляешь без понимания???
← →
Eraser © (2010-02-21 21:15) [29]> [24] Human © (21.02.10 18:49)
установи Д2010, там жмешь ctrl+D и получаешьprocedure TForm1.N4Click(Sender: TObject);
begin
if Memo1.Modified = true then
begin
MessageBeep(Mb_Iconexclamation);
if MessageDlg("Текст в файле Новый был изменён. Сохранить изменения?", mtWarning, [mbOk, mbCancel, mbNo],
0) = mrCancel then
exit
else if MessageDlg("Текст в файле Новый был изменён. Сохранить изменения?", mtWarning,
[mbOk, mbCancel, mbNo], 0) = mrNo then
OpenDialog1.Filter := "Текстовые файлы (*.txt)|*.txt";
if OpenDialog1.Execute and FileExists(OpenDialog1.FileName) then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName)
else if MessageDlg("Текст в файле Новый был изменён. Сохранить изменения?", mtWarning,
[mbOk, mbCancel, mbNo], 0) = mrOk then
SaveDialog1.Filter := "Текстовые файлы (*.txt)|*.txt";
if SaveDialog1.Execute then
Memo1.Lines.SaveToFile(SaveDialog1.FileName + ".txt")
end
else if Memo1.Modified = false then
OpenDialog1.Filter := "Текстовые файлы (*.txt)|*.txt";
if OpenDialog1.Execute and FileExists(OpenDialog1.FileName) then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
Memo1.Modified := false;
end;
← →
{RASkov} © (2010-02-21 21:54) [30]> [24] Human © (21.02.10 18:49)
> в чем ошибка? Здесь код:
При таком форматировании грех без ошибок писать...)
← →
Human © (2010-02-21 23:17) [31]Вы все говорите о форматировании, но ни кто не предложил не одного решения. За то время пока я сидел в форуме пытался, что то исправить, кое что начало получаться. А вы только кричите про порнографию и чужие проблемы. Лично я начинающий и поэтому пишу в форум для начинающих. Интересно, какие вопросы на форуме задаёте вы? Eraser, спасибо за подсказку про Д2010.
← →
Игорь Шевченко © (2010-02-21 23:41) [32]
> но ни кто не предложил не одного решения
Никто не должен предлагать решения. Удивись.
> А вы только кричите про порнографию и чужие проблемы
Это действительно твои проблемы. А не нащи - разбираться в твоем неотформатированном коде.
← →
@!!ex © (2010-02-21 23:51) [33]> [31] Human © (21.02.10 23:17)
Отношение такое по очень простой причине:
Если прочитать хотя бы одну книжку по основам программирования - этих проблем просто не будет.
← →
Плохиш © (2010-02-21 23:55) [34]
> Human © (21.02.10 23:17) [31]
Графу "Образование" в анкете исправь, а то смешно просто...
← →
Eraser © (2010-02-22 00:09) [35]> [31] Human © (21.02.10 23:17)
> но ни кто не предложил не одного решения.
решение одно - форматировать код вручную при написании, например по стандарту http://www.delphikingdom.com/asp/viewitem.asp?catalogid=802 . различные инструменты полезны только когда нужно править какие-нибудь сторонние горе-исходники вроде [24].
← →
Human © (2010-02-22 00:12) [36]Удалено модератором
← →
{RASkov} © (2010-02-22 00:19) [37]Удалено модератором
← →
Human © (2010-02-22 00:19) [38]Удалено модератором
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.06 c