Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.071 c
15-1274335111
AKE
2010-05-20 09:58
2010.08.27
Идея консольной операционки(или рабочего стола).


2-1267590008
cwl
2010-03-03 07:20
2010.08.27
адрес - property с индексом


4-1237182519
Cypher
2009-03-16 08:48
2010.08.27
Управление чужим окном


15-1270007391
Дмитрий С
2010-03-31 07:49
2010.08.27
Какой гугл умный:


2-1271142511
Ostrik
2010-04-13 11:08
2010.08.27
Delphi bd





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский