2014-02-04 4 views
0

Я пытаюсь сделать некоторое устройство для доступа к текстовым файлам (CSV). Я делаю это:Исключение: нарушение доступа - доступ к файлам

type 
     TCSV_Data = class 
     private 
     stFile:TextFile; 
     public 
     constructor Create(path:string); 
     end; 
. 
. 
. 
constructor TCSV_Data.Create(path: string); 
begin 
assignfile(stFile,ces); 
end; 

Проблема, когда я называю конструктор, метод AssignFile повысятся исключение: «Нарушение прав доступа по адресу 004036FF в модуле 'myprog.exe напиши адреса 00000010.»

Когда я использую локальную переменную процедуры, все в порядке, но мне нужен stFile-дескриптор для доступа к этому файлу другими способами.

Что я могу сделать с этим?

+1

Почему вы передаете «путь» конструктору только для его игнорирования? А что такое 'ces'? Я догадался, в чем проблема, но вы действительно должны предоставить SSCCE. –

+2

Это действительно не полезно сказать «когда я вызываю конструктор, я получаю исключение», а затем ** не включаю код, в который вы вызываете конструктор. –

ответ

3

Возможно, вы неправильно вызываете конструктор. Почти наверняка вы пишете:

var 
    CsvData: TCSV_Data; 
.... 
CsvData.Create(path); 

Неверный код. Вот как вы это сделаете правильно:

var 
    CsvData: TCSV_Data; 
.... 
CsvData := TCSV_Data.Create(path); 
try 
    // do stuff with CsvData 
finally 
    CsvData.Free; 
end; 
+0

Спасибо ... это была эта проблема ... Моя ошибка ... – cisar

Смежные вопросы