Главная страница
    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.052 c
4-1142375379
wild sam
2006-03-15 01:29
2006.06.04
Сабклассинг TListBox - не ловится WM_DRAWITEM


4-1142384579
GRAVIX
2006-03-15 04:02
2006.06.04
Работа с реестром на чистом WINAPI


4-1142351776
Volf_555
2006-03-14 18:56
2006.06.04
Проблема с SendMessage


15-1146830150
Der Nechk@ssoff
2006-05-05 15:55
2006.06.04
Место встречи изменить можно!


2-1147840232
petvv
2006-05-17 08:30
2006.06.04
Отчёт frxReport (Fast Report 3)





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