diesel писал(а): ↑12.10.2009 10:00"у меня скрипт вылетает на 20-й строчке, грешу на то что при вызове print кавычку неправильно закрыл, но может быть будут другие варианты?"YUKLA писал(а): ↑12.10.2009 09:08А нуждаюсь я вот в чем. Например, на данный момент я борюсь с функцией _XSend(). Которая работала в X.Org Server 1.5.3 и перестала работать в X.Org Server 1.6.xx, вызывая ошибку "Fatal IO error 11 (Ресурс временно недоступен) on X server :0.0." Исследования показали, что проблема, скорее всего, кроется в неверно указанной длине запроса (req->length). Но могут быть и другие варианты...
Кто-нибудь может мне помочь в этом?
Детский сад. Уж простите.
У меня "кавычки незакрыты" бывали году в 1986, когда я только учился программировать. Вот вам вожделенный "исходник" (полностью). Найдите там незакрытые кавычки.
Код: Выделить всё
Constructor TX11ExtensionInfoRec.Create (Const VExtName :PChar);
Var
FPReq :TXExtQueryVersionReq;
FReply :TXExtQueryVersionReply0;
FPExtRec :PExtVersionQueryRec;
FPDisplay :PDisplay;
bXReplyRes :TBool;
bQueryExtRes :TBool;
cBuffer :PChar;
cSpaces :PChar;
Begin
//Создаем экземпляр класса
Inherited Create;
//Начальные установки
bXReplyRes := False;
bQueryExtRes := False;
FFilled := False;
FExtName := g_strdup(VExtName);
FVersion := Nil;
FMajorOpcode := 0;
F1stEvent := 0;
F1srError := 0;
FVerMajor := 0;
FVerMinor := 0;
//Запрашиваем информацию о FMajorOpcode,F1stEvent,F1srError
FPDisplay := XOpenDisplay (Nil);
if Assigned (FPDisplay) then Begin
//Выполняем прочие операции
DEBUG_OUTPUT (doNone,'','Processed:');
if XQueryExtension(FPDisplay,FExtName,@FMajorOpcode,@F1stEvent,@F1srError) then Begin
bQueryExtRes:= True;
cSpaces := MakeSpaces (30-__strlen(VExtName)); cBuffer := g_strdup_printf('%s,%sOpCode %u',VExtName,cSpaces,FMajorOpcode);
DEBUG_OUTPUT (doNone,'',cBuffer);
g_free (cBuffer); g_free (cSpaces);
End;//if XQueryExtension(FPDisplay,FExtName,@FMajorOpcode,@F1stEvent,@F1srError) then
XCloseDisplay(FPDisplay);
End;//if Assigned (FPDisplay) then
if bQueryExtRes then Begin
FPExtRec := FindExtVersionQueryRecByName (FExtName);
if Assigned (FPExtRec) then Begin
//Отправляем запрос _XSend
FPReq.FReqType := FMajorOpcode;
FPReq.FExtReqType := FPExtRec^.ReqType;
FPReq.FLength := Word(FPExtRec^.ReqLength) SHR 2;
FPReq.FDummy[0] := 0;
FPReq.FDummy[1] := 999;
FPReq.FDummy[2] := 0;
FPReq.FDummy[3] := 999;
//Выполняем запрос _XSend
FPDisplay := XOpenDisplay (Nil);
if Assigned (FPDisplay) then Begin
_XSend (FPDisplay,@FPReq,LongWord(FPExtRec^.ReqLength));
//Получаем ответ от X11 сервера
DEBUG_OUTPUT (doNone,'','Before _XReply');
bXReplyRes := _XReply (FPDisplay,@FReply,0,True);
XCloseDisplay (FPDisplay);
End;//if Assigned (FPDisplay) then
//Обрабатываем результат
if bXReplyRes then Begin
Case FPExtRec^.ProcType of
qvStandard: Begin FVerMajor := FReply.FMajorVersion; FVerMinor := FReply.FMinorVersion; End;
qvSpecial1: Begin FVerMajor := TXExtQueryVersionReply1(FReply).FMajorVersion; FVerMinor := TXExtQueryVersionReply1(FReply).FMinorVersion; End;
qvSpecial2: Begin FVerMajor := TXExtQueryVersionReply2(FReply).FMajorVersion; FVerMinor := TXExtQueryVersionReply2(FReply).FMinorVersion; End;
qvSpecial3: Begin FVerMajor := TXExtQueryVersionReply3(FReply).FMajorVersion; FVerMinor := TXExtQueryVersionReply3(FReply).FMinorVersion; End;
End;//case VerAvailExtArr[i].ProcType of
//Окончательные допущения
FFilled := True;
FVersion:= GetVersionStrDec;
DEBUG_OUTPUT_LINE(doNone,'',FVersion);
End//if bXReplyRes then
else DEBUG_OUTPUT_LINE(doNone,'','');
End//if Assigned (FPExtRec) then
else DEBUG_OUTPUT_LINE(doNone,'','');
End;//if bQueryExtRes then
End;Речь идет о том, что при переходе с версии 1.1.ХХ на 1.2.ХХ в libX11 были внесены какие-то изменения в поведение запроса _XSend(), не отраженные, к тому же, в ChangeLog.
Вот именно этот вопрос я сейчас и изучаю. И в нем мне нужна помощь. Так вот - мне видится, что среди участников ветки ПОКА что не было специалиста, который может мне помочь. Только и всего. Зачем мне открывать исходники?