![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Привет!
Немного о себе: Я закончил годовые курсы по программированию в Delphi7, и получил начальные знания, которых совершенно недостаточно для настоящего программирования. Суть проблемы: Совершенно не понимаю как работают OpenDialog и SaveDialog Какая требуется помошь Написание примерного кода программы (ниже) с комментариями (желательно) Описание программы Программа состоит из двух форм. на первой форме находятся 3 Edit'а. в первый и второй вводится текст, третий содержит полное имя сохраняемого файла (незнаю, наверно можно и без него), рядом с ним кнопка открытия SaveDialog'а (вот здесь поподробней нужно). далее вводим название файла для сохранения и жмем сохранить. Текст из двух эдитов сохраняется в текстовый файл (пусть будет разрешение *.SJ) так, что текст из первого эдита на первой строчке, а из второго на второй. На второй форме тоже находятся три эдита (или два, если путь к файлу не нужен) и кнопка, которая вызывает окно OpenDialog'а. При нажатии на кнопку открывается это окно, пользователь выбирает файл и нажимает открыть. (программа может открывать файлы только *.SJ) Информация из него (там всего две строчки) попадает в соответствующие эдиты. Первая строчка в первый эдит, вторая - во второй. Дополнение: Нужно чтоб у программы было меню для переключения между формами. Вот в принципе и все! Очень жду помощи. в форум можно выложить код, и желательно отправить исходники на мэйл Stip@xaker.ru |
#2
|
|||
|
|||
![]() Курсовые, лабораторные, зачетные и т.д. работы - это в другой раздел. Это раз.
Два. Эти диалоги предназначены для получения имени файла для открытия/сохранения, а не для выполнения собственно самих операций. Вызываешь у диалога метод execute. Если он вернул True, то в свойстве FileName будет выбранное пользователем имя файла. Берешь его и начинаешь сохранять свои данные. Все. |
#3
|
|||
|
|||
![]() Это не курсовая работа, я учусь всего лишь в 10 классе (1 сентября пойду)
Возможно название для темы я подобрал неверно, но увидеть исходник описанной мной программы мне необходимо, чтобы я понял работу этих диалогов - раз и работу с файлами - два . если невозможно сделать исходник, то объясните мне в коде как это все работает. у меня был первый вариант моей работы, где имя файла задавалось в самом коде, соответственно можно было работать только с одним файлом, который заново перезаписывался. Тем более я не уверен в правильной работе с файлами (несколько команд из Turbo паскаля (это мой первый язык)) Думаю вы меня поймете. |
#4
|
|||
|
|||
![]() opendialog1.execute
a:=opendialog1.filename ... и далше уже работай с "a" |
#5
|
|||
|
|||
![]() так, это уже хорошо.
сэйвдиалог работает по такому же принципу (как я понял)? А в "А" будет храниться путь к файлу? тоесть можно Edit3.text:=a; ? а как насчет заполнения эдитов информацией из файла с редким разширением *.SJ? |
#6
|
|||
|
|||
![]() Ты распарси файл и заполняй.. не просто же так ты хотел его открыт ьи что бы он стал "читабельным" ?))
|
#7
|
|||
|
|||
![]() эмм, а можно на понятном простому 10класснику языке?
Что такое "распарси"? PS эта программа является лишь так называемым примером, и не является программой для использования кем либо. Основной смысл - это понять как все это работает и использовать полученные знания для использования в дальнейшем! |
#8
|
||||
|
||||
![]() Цитата:
Распарси - значит разбери файл с некоей упорядоченой структурой на минимально удобные для работы элементы. Например файл Html или XML содержит элементы окантованые <> Для файлов Pas таковыми являются ключевые директивы или конструкции и т.д. Что за файл у вас такой *.SJ я лично понятия не имею, да и расширение файла далеко не всегда говорит о его содержимом. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#9
|
|||
|
|||
![]() пример использования (об использованных классах читай в справке):
Код:
procedure TForm1.btSaveClick(Sender : TObject); begin If SaveDialog1.Execute Then With TStringList.Create Do Begin Add(Edit1.Text); Add(Edit2.Text); SaveToFile(SaveDialog1.FileName); Free; End; end; procedure TForm1.btOpenClick(Sender : TObject); begin If OpenDialog1.Execute Then With TStringList.Create Do Begin LoadFromFile(OpenDialog1.FileName); If Count > 0 Then Edit1.Text := Items[0] Else Edit1.Text := ''; If Count > 1 Then Edit2.Text := Items[1] Else Edit2.text := ''; Free; End; end; |
#10
|
|||
|
|||
![]() Спасибо!
Почти весь код понял, но вопросы есть. Что такое Free; TStringList; Count? а вот Items[0] это первая строчка файла? а Items[1] - вторая? а можно сделать чтобы программа сохраняла из первого эдита например на 10 строчку, а из второго на 15? Читать также? тоесть для 10 строчки Items[9], а для 15 Items[14]? Кстати на итемс ругается! Можно ли сделать программу, которая прочитывает текстовый файл, а на экран (в эдит) выводит только строчку, которая размещается между определенной комбиначией символов, например // Строчка // Вывод без слэшей Последний раз редактировалось StipJey, 28.08.2009 в 10:23. |
#11
|
|||
|
|||
![]() Все? Кончилось желание помочь? жаль...
я надеялся что это Цитата:
а где можно найти Цитата:
|
#12
|
||||
|
||||
![]() Здесь, но сюда ходят энтузизисты у которых тоже есть свои заморочки, и именно вашего сообщения никто не ждет. В выходные будет больше народу.
А что касается вопросов, то выдавайте информацию по максимуму, а не по чайной ложке. Что я должен подумать на ваш вопрос/восклицание: Цитата:
Итак, свою порцию недовольства я вам выложил, теперь по вашим вопросам: ![]() Цитата:
TStringList - один из стандартных классов, любезно предоставленых разработчиками Дэльфи. Очень удобен при работе с наборами строк. Имеет встроеные мощные средства управления и манипуляци этими строками. Count - в общем случае свойство объекта возвращающе количество элементов. Для TStringList возвращает количество элементов находящихся в свойстве Strings Цитата:
Вообще, приведенный пример содержит один хитрый финт, который для новичка может быть непонятен. Хитрость в том, что обычно создают экземпляр класса в явном виде, а потом с ним работают. А в этом примере, экземпляр создается в неявном виде и доступ к его свойствам/методам, можно получить, только в пределах блока with. В общем где-то так. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#13
|
|||
|
|||
![]() Спасибо! Критику воспринял
код вот такой (выложил весь, чтоб было понятней, ошибочное место выделил красным, Знаком || выделено положение курсора) Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin If SaveDialog1.Execute Then With TStringList.Create Do Begin Add(Edit1.Text); Add(Edit2.Text); SaveToFile(SaveDialog1.FileName); Free; End; end; procedure TForm1.Button2Click(Sender: TObject); begin If OpenDialog1.Execute Then With TStringList.Create Do Begin LoadFromFile(OpenDialog1.FileName); If Count > 0 Then Edit1.Text := Items||[0] Else Edit1.Text := ''; If Count > 1 Then Edit2.Text := Items[1] Else Edit2.text := ''; Free; End; end; end. Цитата:
вот такто Далее... поиском я пользуюсь, и прочитал немало статей прежде чем обратился к вам. а можно тебя попросить написать эту программку, она же для вас - раз плюнуть, а мне полезно будет ![]() |
#14
|
|||
|
|||
![]() Цитата:
Молодец, что воспринял. По поводу ошибки, ну не боги горшки обжигают. Мог и напутать с именем свойства - код писал сразу здесь. Попробуй вместо Items использовать Strings. Должно сработать. По поводу желания помогать. А чего ты хотел в час ночи (ну или когда ты там сообщение написал)? |
#15
|
|||
|
|||
![]() Цитата:
Можно, тебе потребцуются функции Pos и Copy. |