Главная страница
    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.04 c
2-1148131179
Viconia
2006-05-20 17:19
2006.06.04
Строку в цену


15-1146817902
Vas86
2006-05-05 12:31
2006.06.04
Залить файл на FTP сервер


15-1147020493
AlexanderMS
2006-05-07 20:48
2006.06.04
Украшение кода


15-1147350795
carmen
2006-05-11 16:33
2006.06.04
tpu


6-1138812061
Volf_555
2006-02-01 19:41
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский