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

Вниз

Непонятное Access Violation   Найти похожие ветки 

 
varfolomey   (2006-05-20 12:32) [0]

есть код:


var Data: Array[1..10] of String; I: Integer;
begin
// ðåãèñòðàöèÿ
   Data[1] := edtName.Text;
   Data[2] := cmbFormaSob.Items[cmbFormaSob.ItemIndex];
   Data[3] := edtAdressIndex.Text;
   Data[4] := edtAdressCity.Text;
   Data[5] := edtAdressStreet.Text;
   Data[6] := edtAdressDom.Text;
   Data[7] := edtAdressOffice.Text;
   Data[8] := edtOfficePhoneC.Text;
   Data[9] := edtOfficePhoneN.Text;
   Data[10]:= edtRukovodName.Text;

 for I := 1 to 10 do begin
   Data[I] := Trim(Data[I]);
 end;

 Rec.Name := Data[1]+", "+Data[2];
 Rec.AdressIndex := Data[3];
 Rec.AdressCity := Data[4];
 Rec.AdressStreet := Data[5];
 Rec.AdressDom := Data[6];
 Rec.AdressOffice := Data[7];
 Rec.RukovodName := Data[10];
 Rec.Region := cmbRegion.Text;
 Rec.Category := cmbCategory.Text;
 Rec.WWW := Trim(edtWWW.Text);
 Rec.Email := Trim(edtEmail.Text);
 Rec.IsInHolding := (cbInHolding.Checked or cbHolding.Checked);
 Rec.HoldingName := edtParentHolding.Text;

 case (cmbProzvon.ItemIndex) of
   0: Rec.Prozvon := psProzvoneno;
   1: Rec.Prozvon := psNeprozvoneno;
   2: Rec.Prozvon := psPM;
 end;

 case (cmbObrabotka.ItemIndex) of
   0: Rec.Obrabotka := osObrabotano;
   1: Rec.Obrabotka := osNeobrabotano;
 end;

 case (cmbVozrast.ItemIndex) of
   0: Rec.Vozrast := tsOld;
   1: Rec.Vozrast := tsNew;
 end;

 if (RadioButton5).Checked then Rec.Vajnost := vlHigh;
 if (RadioButton6).Checked then Rec.Vajnost := vlMedium;
 if (RadioButton7).Checked then Rec.Vajnost := vlLow;
 if (RadioButton8).Checked then Rec.Vajnost := vlNone;

 if (RadioButton1).Checked then Rec.Prodagi := pcHigh;
 if (RadioButton2).Checked then Rec.Prodagi := pcMedium;
 if (RadioButton3).Checked then Rec.Prodagi := pcLow;
 if (RadioButton4).Checked then Rec.Prodagi := pcNone;

 if (Editing) then SetDbRec(Pos, Rec)
 else SetDbRec(FileSize(Database), Rec);

 ModalResult := mrOk;


Так вот, в первом проходе всё ОК, во втором - данные не сохраняются, происходит Access Violation. GetLastError возвращает нуль. В чём трабл?


 
tesseract ©   (2006-05-20 12:38) [1]


>  if (Editing) then SetDbRec(Pos, Rec)  else SetDbRec(FileSize(Database),
>  Rec);

скрорее всего здесь.

Не указан полный код. попробуй try .. exept + пошаговая отладка.


 
varfolomey   (2006-05-20 12:45) [2]

Не держи за дурака, пожалуйста.

function GetDbRec(Rec: Integer): TOrganization;
var PrPos: integer;
begin
 PrPos := FilePos(Database);
 Seek(Database, rec);
 Read(Database, Result);
 Seek(Database, PrPos);
end;

procedure SetDbRec(Rec: Integer; Data: TOrganization);
var PrPos: integer;
begin
 PrPos := FilePos(Database);
 Seek(Database, rec);
 Write(Database, Data);
 Seek(Database, PrPos);
end;


что тут может быть необычного?


 
sniknik ©   (2006-05-20 14:23) [3]

> GetLastError возвращает нуль.
а что он должен возвращать? где функции возвращающие через него ошибку? где он сам в конце концов?
т.е. ... приведен не полный код.

> Не держи за дурака, пожалуйста
ладно... будем держать за идиота... ;)

у тебя, что файл куда пишеш/читаеш типа TOrganization? т.е. типа рекорд с неуказанной структурой кстати, надеюсь длинных строк там в структуре нет? (не надо больше по дураков, просто покажи структуру)

> что тут может быть необычного?
для работы с базой... надо работать с базой. не изобретать велосипед, если это не самоцель конечно, курсовая например, а нет, так тут все необычно...

p.s. совет про try .. exept [1] не игнорируй, если конечно не тот за кого думаеш тебя держат.


 
tesseract ©   (2006-05-20 16:33) [4]


> что тут может быть необычного?


Access ведь думает, что есть. Ошибка может быть далеко не этом коде. Просто в этом коде она проявляется.

Неясно напроимер, что происходит во время скрытия/показа , создания/разрушения формы. Какие объекты при этом создаются / разрушаются. Возможно просто перепутал последовательность событий.
У тебя при закрытии формы могут разрушаються ссылки нужные для твоей обработки- весьма распространённая ошибка кстати.


>    Data[2] := cmbFormaSob.Items[cmbFormaSob.ItemIndex];

А нельзя просто cmbFormaSob.text ?

ЗЫ Я тебя уверяю что никто тебя не за кого не держит, и не отпускает. В ступор может уйти любой программист.



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

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

Наверх




Память: 0.48 MB
Время: 0.047 c
15-1146900767
worldmen
2006-05-06 11:32
2006.06.04
Регистрация почтового ящика на fastmail.fm


15-1146924039
User_OKA
2006-05-06 18:00
2006.06.04
Коммутатор


2-1147957566
Alien1769
2006-05-18 17:06
2006.06.04
Поиск словосочетания в полях


2-1147649380
rosl
2006-05-15 03:29
2006.06.04
bat


2-1148018581
elfebet
2006-05-19 10:03
2006.06.04
Как програмно перевернуть экран?