Форум: "Основная";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];
ВнизКто найдёт ошибку(ки) в этом коде? Найти похожие ветки
← →
^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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c