Форум "Delphi" (архив)
Паскаль, Делфи
#0
АЛЁНА
© 25.02.05 18:55:46 - 01.03.05 15:33:33 Открытие сохранённой StringGridКто-нибудь! Помогите с открытием сохранённой StringGrid. Не открывается. Пишет ошибку U/O error. Ошибка начинается при записи-сохранении (ЗАПИСЬ В ФАЙЛ). Что я пишу неправильно? Помогите разобраться, что я делаю не так. Весь Unit здесь: Очень срочно надо!..
|
|
> АЛЁНА © проще было бы запаковать проект архиватором и выложить там же. с помощью отладчика легче будет искать, чем глазками выискивать |
|
сходу могу сказать, что 1) вместо TextFile я бы использовал тип Text2) Append(f); // открываем файл после Rewrite(f); // создаем файл абсолютно лишнее движение 3)твой пример(правда в чуть "усложненном" виде) есть в хелпе Делфи The following example uses a button, a string grid, and a Save dialog box on a form. When the button is clicked, the user is prompted for a filename. When the user clicks OK, the contents of the string grid are written to the specified file. Additional information is also written to the file so that it can be read easily with the FileRead function. procedure TForm1.Button1Click(Sender: TObject);
|
|
#3
АЛЁНА
© 25.02.05 21:22:13
Deep! Спасибо огромное!!! Щас буду пробовать. |
|
#4
АЛЁНА
© 25.02.05 23:26:02
Deep! Стока в конце StringGrid1.Cells[X,Y], Length(StringGrid1.Cells[X,Y]); ругается "[Error] Osn_sost.pas(259): Variable required". Чё он хочет? |
|
#5
АЛЁНА
© 25.02.05 23:42:39
Архив проекта выложила на адрес: |
|
> Variable required". Чё он хочет? Переменную наверно и хочет... |
|
#7
АЛЁНА
© 26.02.05 09:50:35
Это понятно, но вот новичку, каким я являюсь, да к тому же ещё и дремучему, хочется понять какую переменную куда надо вписать. По клику мыши на кнопке надо открыть предварительно сохранённую StringGrid. Поможите, люди добрые! |
|
var S : String; S:=Length(StringGrid1.Cells[X,Y]); Length(S); |
|
>#7 АЛЁНА © 26.02.05 09:50:35 > хочется понять какую переменную куда надо вписать. Счёлкаешь мышкой внутри скобок, жмёшь CTRL-ALT-SPACE, всплывает тот же хинт, что и при вводе первой скобки, с перечислением всех параметров функции, там, обычно всё описано, где var, где что... :) А Length тут ни при чём, он с константами работает... смотри функцию, куда ты передаёшь результат от Length... |
|
>#9 Knight © 26.02.05 10:16:40 > жмёшь CTRL-ALT-SPACE Стоп... CTRL-SHIFT-SPACE... |
|
>#5 АЛЁНА © 25.02.05 23:42:39 > Архив проекта выложила на адрес: А архив не открывается... |
|
#12 Mystic © 26.02.05 12:07:50
Oшибок в коде чтения/записи из файла я заметил только одну ошибку от невнимательности Однако, во-первых... Как уже отмечалось, делать после ReWrite вызов Append это уже контрольные выстрел в голову, необязательно. Во-вторых, при загрузке выполнять i := 0 необязательно, так как в цикле все равно переменная проинициализируется. И еще, Deep, TextFile это синоним для Text, возникший из-за того, что ряд компонент имеют свойство Text, а писать в таких случаях System.Text неинтересно. А теперь сама ошибка Хотя может быть это и задумка такая |
|
>#12 Mystic © все точно подметил > И еще, Deep, TextFile это синоним для Text, возникший из-за > того, что ряд компонент имеют свойство Text, а писать в > таких случаях System.Text неинтересно. я знаю(ведь не написал, что это ошибка). Просто написал о собственных предпочтениях, вернее привычках еще с Турбопаскаля. |
|
#14 Mystic © 26.02.05 12:28:59
Не ошибка, но пора бы уже начать переползать на новые веяния... Не поздно ли? |
|
>#14 Mystic © согласен, пора. |
|
#16
АЛЁНА
© 28.02.05 10:20:21
Спасибо всем большое! Переделала процедуры сохранения-открытия. Сделала на открытие так: assignfile (f,'Основной состав'); - открывается нормально. Но результат немного не тот. Мне бы надо на самом деле, чтоб при открытии формы со StringGrid'ом автоматически в таблицу грузился этот файл "Основной состав". Выложенный архив заменила (461Кб). Теперь скачивается. Там есть и примерный файл "Основной состав". Помогите добиться нужного результата! |
|
> чтоб при открытии формы со StringGrid'ом автоматически в > таблицу грузился этот файл "Основной состав". TChildForm = class(TForm)пару замечаний: 1) старайтесь красиво, структурированно, с соблюдением регистра писать код -- тогда он становится читабельным и в нем будет легко разобраться и тебе(например, через полгода/год) и другим 2)используй компонент ActionList -- он значительно упрощает жизнь программиста... |
|
АЛЁНА, напиши тему лабораторной... а то это не программа, а какой-то разврат? Ничего личного... |
|
Обиделась? |
|
#20
АЛЁНА
© 01.03.05 13:27:12
Спасибо, Deep! Замечания постараюсь учесть. Изучаю Delphi всего месяц самостоятельно, тыкаюсь носом, как котёнок... Knight © 28.02.05 14:10:18: Крокодиловый фон, как видно, произвёл впечатление! В итоге всё будет выглядеть гораздо строже и аскетичнее. Программа предназначена для нашего завуча, подсчитывающего часы для преподавательского состава - чтоб всё было в одном месте, типа базы данных, и ещё немножечко считало. Поскольку солидные самоподсчитывающие таблицы для меня пока сложноваты - пытаюсь работать со StringGrid. |
|
>#20 АЛЁНА © 01.03.05 13:27:12 > Крокодиловый фон, как видно, произвёл впечатление! Фона как-то и не заметил... > Программа предназначена для нашего завуча, подсчитывающего > часы для преподавательского состава - чтоб всё было в одном > месте, типа базы данных, Вот я и смотрю, что ТИПА... а почему бы не использовать реальную БД? Чем ТАКОЕ, лучше уж Excel или Access... |
|
#22
АЛЁНА
© 01.03.05 13:45:10
Наверно, лучше... Я об этом подумаю. Сделанная мной в Access таблица была помещена на форму, но я так и не разобралась, как её заставить считать разницу и сумму. Знаю, что для этого служат CalcFields, но не знаю алгоритмов их использования. |
|
Такого уровня программу, можно без заморочек и с использованием Paradox сделать... |
|
#24
АЛЁНА
© 01.03.05 14:06:09
Что значит и с использованием Paradox? |
|
BDE+Paradox... хотя я последнее время этот тандем и не очень... но для данной задачи + первый месяц в Delphi = самое оно |
|
#26
АЛЁНА
© 01.03.05 14:25:17
Спасибо за совет. У меня нет этих программ. Пошла дальше мучить Delphi. Постепенно разберусь, программистами же не рождаются... |
|
>#26 АЛЁНА © 01.03.05 14:25:17 > Спасибо за совет. У меня нет этих программ. BDE - это как-раз из Delphi... Borland Database Engine... Смотри во вкладкам TTable, TQuery и иже с ними... доступ к выборкам через TDataSource, отображение TDBGrid, TDbLabel etc. |
|
> #22 АЛЁНА © только идущий сможет пройти путь > Сделанная мной в Access таблица была помещена на форму, > но я так и не разобралась, как её заставить считать разницу > и сумму. Знаю, что для этого служат CalcFields, но не знаю > алгоритмов их использования. с таблицами Access можно работать через компоненты: 1)БДЕ(требует установленого BDE на всех машинах, где будет использоваться прога) 2)АДО(вообщем, ничего не требует -- все нужное уже есть в поставке Винды) Лично я рекомендую ADO. Зачем лишнее с собой таскать? В делфи есть соотвествующие закладки компонент. Изучай, смотри, пробуй, спрашивай. вот неплохая иллюстрированная статья |
|
#29
АЛЁНА
© 01.03.05 14:45:08
Knight:...TTable, TQuery и иже с ними... доступ к выборкам через TDataSource, отображение TDBGrid, TDbLabel etc. Там я уже полазила, нашла в TTable CalcFields и на этом пока замкнула. Deep: Спасибо. По ссылке нашла огромный список статей. Какую именно смотреть? |
|
> Какую именно смотреть? извини, там сайт на фреймах построен: бросил общую ссылку. Вот эту: |
|
#31
АЛЁНА
© 01.03.05 15:10:58
Ага. Щас буду читать и пробовать... Может, действительно быстрее и логичнее всё получится (если разберусь, конечно...). Спасибо за участие и помошь. |
|
а еще можешь глянуть демонстрационные проекты по АДО из комплекта Делфи "C:\Program Files\Borland\Delphi7\Demos\Ado\" |
|
>#31 АЛЁНА © 01.03.05 15:10:58 > Ага. Щас буду читать и пробовать... Может, действительно > быстрее и логичнее всё получится (если разберусь, конечно...). Если, что заходи, помогут... хотя BDE, для новичка, всё-же попроще... |
Тема находится в архиве
Написать ответ |
|
