Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.18;
Скачать: CL | DM;

Вниз

Кто найдёт ошибку(ки) в этом коде?   Найти похожие ветки 

 
^Sanya ©   (2002-11-09 14:19) [0]

ри обращении к Base.StringTables[0].Cells[0,0] ошибок не возникает, но после обращении к другим ячейкам и их удачного чтения (перед Destroy), возникает "Invaalid pointer operation".
Где-то утечка памяти???

procedure TForm1.Button1Click(Sender: TObject);
var
Base: TBase;
begin
Base := TBase.Create(ExtractFilePath(Application.ExeName) + "test.ini");
ShowMessage(Base.StringTables[0].Cells[0,0]);
ShowMessage(Base.StringTables[0].Cells[0,1]);
ShowMessage(Base.StringTables[0].Cells[1,0]);
Base.Destroy;
end;


//код модуля используемых классов
type
TBase = class;
TStringTable = class
private
FFileName: string;
FName: string;
FColCount,
FRowCount: Integer;
procedure SetCell(ACol, ARow: Integer; const Value: string);
function GetCell(ACol, ARow: Integer): string;
public
property Name: string read FName;
property ColCount: Integer read FColCount;
property RowCount: Integer read FRowCount;
property Cells[Col, Row: Integer]: string read GetCell write SetCell;
constructor Create(ATableName: string);
destructor Destroy;
end;
TBase = class
private
FStringTables: array[Byte] of TStringTable;
FStringTableCount: Byte;
procedure SetTableNames;
function GetStringTable(i: Byte): TStringTable;
protected
FFileName: string;
public
property StringTables[index: Byte]: TStringTable read GetStringTable;
property FileName: string read FFileName;
property StringTableCount: Byte read FStringTableCount;
constructor Create(AFileName: string);
destructor Destroy;
end;

implementation

uses
CryptInt;

{ TTable }

constructor TStringTable.Create(ATableName: string);
var
basE: tbase;
begin
inherited Create;
FFileName := Base.FFileName;
FName := ATableName;
end;

destructor TStringTable.Destroy;
begin
inherited
end;

function TStringTable.GetCell(ACol, ARow: Integer): string;
var
IniFile: TIniFile;
begin
IniFile := TIniFile.Create(FFileName);
try
Result := DeCryptEx(IniFile.ReadString(FName, EnCryptEx(IntToStr(ACol) + "^"
+ IntToStr(ARow), CryptKey), ""), CryptKey);
finally
IniFile.Free
end;
end;

procedure TStringTable.SetCell(ACol, ARow: Integer; const Value: string);
var
IniFile: TIniFile;
begin
IniFile := TIniFile.Create(FFileName);
try
IniFile.WriteString(FName, EnCryptEx(IntToStr(ACol)+"^"+IntToStr(ARow),
CryptKey), EnCryptEx(Value, CryptKey));
finally
IniFile.Free
end;
end;

{ TBase }

constructor TBase.Create(AFileName: string);
begin
if not FileExists(AFileName) then
if FileCreate(AFileName) = -1 then
raise Exception.Create(Format("


 
^Sanya ©   (2002-11-09 14:20) [1]

первую уже нашёл: "ри" = "При" :)


 
Anatoly Podgoretsky ©   (2002-11-09 14:52) [2]

Это сплошная ошибка


 
Николай Быков ©   (2002-11-09 14:53) [3]


> Anatoly Podgoretsky © (09.11.02 14:52)

А можно подробнее?


 
Anatoly Podgoretsky ©   (2002-11-09 15:06) [4]

Нет нужды, требоввлось найти только одну ошибку, а тут их много


 
Николай Быков ©   (2002-11-09 15:11) [5]


> Anatoly Podgoretsky © (09.11.02 15:06)

Прочитайте еще раз сабж ветки. там не ограничивается число ошибок


 
Anatoly Podgoretsky ©   (2002-11-09 15:20) [6]

Да вот хотя бы эта
ShowMessage(Base.StringTables[0].Cells[0,0]);


 
^Sanya ©   (2002-11-09 17:16) [7]


> Anatoly Podgoretsky © (09.11.02 15:20)


а что не так с
> ShowMessage(Base.StringTables[0].Cells[0,0]);
???


 
Anatoly Podgoretsky ©   (2002-11-09 17:39) [8]

Да хотябы что [0].[0,0] может не существовать


 
^Sanya ©   (2002-11-09 17:58) [9]

не в этом суть...
ShowMessage(Base.StringTables[0].Cells[0,0]); - это просто проверка чтения свойств...
Так как проект в разработке, только сейчас пишу св-ва, обозначающие границы соответствующих массивов...

Эх... где же Юрий Зотов... Он бы мне всё как следует расписал...

P.S.: На форум я хожу только для того, чтобы спрашивать саамые нееезнакомые мне вещи. (То есть если судить о моих знаниях по мессагам в форуме, то я полный ноль:) ) Говорить(или спрашивать) о том, что я и так знаю, IMHO, бессмысленно. Пойду-ка в книжках пороюсь...



Страницы: 1 вся ветка

Текущий архив: 2002.11.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
7-59447
msgipss
2002-09-18 09:45
2002.11.18
Как разобрать email адрес (получить его в чистом виде)


3-58994
AKondor
2002-10-28 20:33
2002.11.18
Как организовать обмен данными в InterBase ?


1-59190
Геннадий
2002-11-09 15:18
2002.11.18
Name, NameEx и NameA - разница?


14-59422
Юрий Зотов
2002-10-15 18:07
2002.11.18
Неужто дожили?


1-59232
sterran
2002-11-06 18:23
2002.11.18
Проблема преобразование символов...