Форум: "Основная";
Текущий архив: 2002.03.11;
Скачать: [xml.tar.bz2];
ВнизПомогите преобращовать Record в Variant! Найти похожие ветки
← →
Last Hero (2002-02-20 23:00) [9]Запись (в TLB, экспортирую и в сервер и в клиент):
StudentRecord = packed record
ID: Integer;
Main: MainStudentRecord;
Address: AddressRecord;
Passport: PassportRecord;
Reference: ReferenceRecord;
MainSchool: SchoolRecord;
MainCollege: CollegeRecord;
MainGraduate: GraduateRecord;
MainMaster: MasterRecord;
MainAdditional: AdditionalRecord;
MainDriver: DriverRecord;
language1: LanguageRecord;
language2: LanguageRecord;
language3: LanguageRecord;
language4: LanguageRecord;
language5: LanguageRecord;
Work1: WorkRecord;
Work2: WorkRecord;
Work3: WorkRecord;
Work4: WorkRecord;
Work5: WorkRecord;
knollege: WideString;
notes: WideString;
end;
MainStudentRecord = packed record
Photo: OleVariant;
FirstName: WideString;
SecondName: WideString;
LastName: WideString;
Birthday: TDateTime;
Sex: Integer;
FamilyStatus: Integer;
Military: Integer;
end;
// Далее различные рекорды, на которые ссылается StudentRecord
Клиент:
var StudData : StudentRecord;
StudOle : OleVariant;
PStudData : Pointer;
//..........................................................
// Здесь заполняется StudData значениями, которые я хочу послать на сервер
//..........................................................
StudOle := VarArrayCreate([0, SizeOf(StudentRecord)], varByte);
PStudData := VarArrayLock(StudOle);
try
Move(StudData, PStudData^, SizeOf(StudentRecord));
finally
VarArrayUnlock(StudOle);
end;
// Вызываю серверную процедуру, передавая ей запись StudOle
ID := DataModule1.SocketConnection1.AppServer.Add_Student(StudOle, ErrMsg);
Сервер:
function TCcs_serv_rdm.Add_student(OleStudData: OleVariant;
out ErrMsg: WideString): Integer;
var POleStudData : pointer;
StudData : StudentRecord;
// ............................................................
begin
// Раскрываем OleStudData в StudData
POleStudData:=VarArrayLock(OleStudData);
Move(POleStudData^, StudData, SizeOf(StudData));
VarArrayUnLock(OleStudData);
try
ShowMessage(StudData.Main.FirstName); // Просто хочу вывести что-нибудь, и здесь возникает Access Violation. То же самое происходит и при любом другом подобном вызове
except
on E : Exception do ShowMessage(E.Message)
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.03.11;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.004 c