Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
ВнизНепонятное 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.052 c