23:42

Delphi 7

Здравствуйте,вопрос простой.Вот кусок кода:
procedure TForm1.Button5Click(Sender: TObject);
Var
R:textfile;

begin
Assign( R,'D:/Massive.txt');

end;

У меня выдаётся ошибка для комманды Assign.Пишется про несоответсвие типов данных.
Почему так,не могу понять.В консольном режиме,если так писать,то ошибок не будет.
Заранее спасибо.

@темы: Delphi

Комментарии
06.05.2010 в 23:48

All of the love we left behind watching the flashbacks intertwine. I think our lives have just begun.
Я почему-то всегда думала, что назначение файла задается вызовом процедуры AssignFile. Справочник то же самое говорит.
06.05.2010 в 23:53

~Abigail~ а вот в чём дело,спасибо.Странно, в консоли видимо это не требовалось,потому что и так работало.Значит всё-таки обязательно file приписывать.
06.05.2010 в 23:59

All of the love we left behind watching the flashbacks intertwine. I think our lives have just begun.
nvse, честно - я в консоли не работала, сразу с формами, поэтому даже не знаю) но раз все работает - хорошо)
07.05.2010 в 09:00

Значит всё-таки обязательно file приписывать.
Процедура Assign - это просто устаревший аналог AssignFile. Рекомендуется везде, даже в консольных программах на Delphi, использовать только AssignFile.
08.05.2010 в 18:56

mr Gray ясно,спасибо.Не хочу новую тему создавать,но появилось ещё пару вопросов.Если можно я их тут задам:
В процессе запуска программы у меня появилась вот такая ошибка:[Fatal Error] Could not create output file 'D:\Program files\Delphi 7\Projects\Project1.exe'
Эта ошибка никуда не уходит.Вы не знаете из-за чего это может быть и как её исправить?Заранее спасибо.
08.05.2010 в 20:49

nvse
Может быть несколько причин:
- Старый project1.exe может быть запущен и поэтому его не получается удалить (если не найдете его в диспетчере задач - перезагрузитесь и попробуйте снова).
- Антивирус что то нашел
- Папка защищена от записи, нет прав на доступ к папке - тогда можно создавать исполнимый файл где-то еще (Output Directory в опциях проекта)
- Диск переполнен и т.д.
08.05.2010 в 22:36

mr Gray ошибка ушла,надо было почему-то Делфи просто перезапустить,спасибо.И вот 2-ой вопрос,который я хотел задать,если можно:
У меня изредка(где-то из 4-х случаев приходится на 1 неудачный ) появляется ещё вот такая ошибка:

Мне кажется дело в следующем:до недавнего времени программа такой ошибки не выдавала и всё работало,затем я кое-что в ней изменил,и вот стала появляться эта ошибка
Это изменение свзано в следующем:Моя программа должна была сортировать массив строк и потом производить двоичный поиск.После того как массив у меня отсортировывался,он прямиком передавался в другой массив и там уже искалась строка,но я кое-что переделал и сделал так:отсортированный массив записывается как нетипизированный файл,а потом считывается другим массивом и там производится поиск.Мне,кажется всё дело в этом считывании,поэтому вот код этого участка:

Setlength(String_Mas2,k);//здесь k это общее число символов в массиве строк
AssignFile(E,'D:/Отсортированный массив.txt');
Rewrite(E,k);

For i:=1 to L do
BlockWrite(E,String_Mas[i],1);

CloseFile(E);

Reset(E,k);
For i:=1 to L do
BlockRead(E,String_Mas2[i],1);//Вот здесь происходит считывание
Closefile(E);

Ещё раз огромное спасибо.
09.05.2010 в 00:10

Setlength(String_Mas2,k) создает массив с элементами от String_Mas2[0] до String_Mas2[k-1]. Скорее всего L > k-1, поэтому идет выход за границы массива. Тоесть цикл, скорее всего, должен выглядеть так:

09.05.2010 в 00:22

Вот точно, забыл что нумерация с 0 начинается,большое спасибо.