Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 27.11.2009, 13:34   #1
ymka2
 
Регистрация: 27.11.2009
Сообщений: 9
По умолчанию Ошибка при OpenDialog.Execute

Всем доброго времени суток! помогите разобраться с кодом.
Нужно чтобы по нажатию кнопки вызывалась функция,которая создает таблицу на сервере и записывает туда данные из блокнота.
Если написать в обычной procedure TForm1.Button2Click(Sender: TObject),то все работает,а если написать функцию и вызвать при нажатии кнопки, выдает ошибку:
"Project Project1.exe raised exception class EAccessViolation with message 'Access violation at addres 004AAC3D in module 'Project1.exe'. Read of address 00000003'. Process stopeed.Use Step or Run to continue."

Прога вылетает вот в этом месте:
if opendialog1.Execute then
begin
AssignFile(f, Opendialog1.FileName);
Reset(f);

Указывал и в Var функции и в type unita и вместе(OpenDialog1: TOpenDialog),все равно никак.Подскажите,как и где нужно описать opendialog?
ymka2 вне форума
Старый 27.11.2009, 13:39   #2
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

Цитата:
Сообщение от ymka2 Посмотреть сообщение

Прога вылетает вот в этом месте:
if opendialog1.Execute then
begin
AssignFile(f, Opendialog1.FileName);
Reset(f);

Указывал и в Var функции и в type unita и вместе(OpenDialog1: TOpenDialog),все равно никак.Подскажите,как и где нужно описать opendialog?
Попробуйте вместо Reset(f); использовать reWrite(f);
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума
Старый 27.11.2009, 13:50   #3
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Вот глянь:
Вложения
Тип файла: zip OD.zip (5.2 Кб, 33 просмотров)
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума
Старый 27.11.2009, 13:52   #4
ymka2
 
Регистрация: 27.11.2009
Сообщений: 9
По умолчанию

попробывал,тоже самое. Проблема именно в opendialog, он не инициализирован

Roof,это то что надо.А можно при нажатии кнопки вызывать функцию,которая делает тоже самое? если можешь выложи саму функцию

Последний раз редактировалось Stilet; 27.11.2009 в 15:02.
ymka2 вне форума
Старый 27.11.2009, 14:00   #5
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Так у меня вроде все по нажатию кнопки
Как понять - по нажатию конопки тоже самое?
Типа функцию отдельно написать?
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума
Старый 27.11.2009, 14:03   #6
ymka2
 
Регистрация: 27.11.2009
Сообщений: 9
По умолчанию

Вот так примерно надо:

Код:
function od(var f:textfile):string ;
var   str: string; opendialog1:Topendialog;
begin
 if OpenDialog1.Execute then begin
   AssignFile(f, OpenDialog1.FileName);
   Reset(f);
   Readln(f, str);
   ShowMessage('1. line of textfile: ' + str);
   Closefile(f);
end;  end;


procedure TForm1.Button1Click(Sender: TObject);
begin
 od(f);
 end;
Но если нажать на кнопку,то вылезает ошибка.

Последний раз редактировалось Stilet; 27.11.2009 в 15:02.
ymka2 вне форума
Старый 27.11.2009, 14:06   #7
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Цитата:
function od(var f:textfile):string ;
засунь описание функции в раздел где описана
Код:
procedure Button1Click(Sender: TObject);
и исправь
Код:
function tform1.od(var f:textfile):string ;
var str: string;{а вот это тут не надо opendialog1:Topendialog;}
begin
if OpenDialog1.Execute then begin
AssignFile(f, OpenDialog1.FileName);
Reset(f);
Readln(f, str);
ShowMessage('1. line of textfile: ' + str);
Closefile(f);
end; end;
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 27.11.2009 в 14:08.
ОДИНОЧЕСТВО В СЕТИ вне форума
Старый 27.11.2009, 14:06   #8
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Код:
procedure My_Open(fname: string);
var
 f: TextFile;
 str: string;
begin
   AssignFile(f, fname);
   Reset(f);
   Readln(f, str);
   ShowMessage('1. line of textfile: ' + str);
   Closefile(f);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if OpenDialog1.Execute then begin
   My_Open(OpenDialog1.FileName);
 end;
end;
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума
Старый 27.11.2009, 14:08   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Умка, OpenDialog это класс. Когда ты кидаешь его экземпляр на форму, то форма это делает без тебя. Но Дельфи не имеет модуля телепатии, поэтому когда ты пишешь свою примочку, то OpenDialog нужно инициализировать самостоятельно . Напиши сразу после begin
Код:
OpenDialog1.Create(Form1)
А перед последним end в той же функции
Код:
OpenDialog1.Free;
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума
Старый 27.11.2009, 14:13   #10
ymka2
 
Регистрация: 27.11.2009
Сообщений: 9
По умолчанию

Все получилосьВсем огромное спасибо!!!!
ymka2 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenDialog1.Execute=true (error) zotox Помощь студентам 2 13.07.2009 16:30
Проблема с фкнкцией Execute rocky7 Общие вопросы C/C++ 0 01.03.2009 16:42
Запуск приложения при работе OpenDialog kest Общие вопросы C/C++ 2 17.06.2008 23:51
Запрет на read table или execute proc <name_proc> Lunatikus БД в Delphi 2 27.02.2008 11:26
При открытие в OpenDialog .doc-вский файл должен отображаться в RichEdit. doc to rtf Lemon Компоненты Delphi 9 07.06.2007 19:19