Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.47 MB
Время: 0.008 c
14-59367
KSergey
2002-10-29 14:24
2002.11.18
Как запретить остановку в исходниках компонент


14-59401
dimonf
2002-10-31 08:45
2002.11.18
Посоветуйте программу для коталогизации документации.


14-59371
Anatoly Podgoretsky
2002-10-30 08:01
2002.11.18
Именинники 30 октября


4-59486
@lexey
2002-09-23 22:44
2002.11.18
Как выключить блок АТХ под Windows XP


14-59353
keymaster
2002-10-29 16:21
2002.11.18
математика





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский