Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.038 c
15-1147015230
Интересующийся
2006-05-07 19:20
2006.06.04
Ошибка при поиске в форуме!?


1-1146310830
DARKir
2006-04-29 15:40
2006.06.04
Картинка на SpeedButton


8-1135340771
ilifant
2005-12-23 15:26
2006.06.04
Преобразовыние ч/б bmp изображения в массив...


2-1147846635
novice
2006-05-17 10:17
2006.06.04
Как закрыть приложение на удаленном компьютере?


15-1146824709
iamdanil
2006-05-05 14:25
2006.06.04
Пополнение кошелька с мобильного телефона





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский