DROnik
>У тебя из жж код работает?
спасибо, пофиксил
тока сегодня буду ставить триал )
Да что за фигня.
У меня триал установился без исходников rtl-ля?
Это так надо или у меня какойто глюк?
ЗЫ: сорци позарез нужны. Я без них не представляю программирования :). Они — лучше всякой документации :)
*vmr
Триальная без исходников наверно.
На торрентах сейчас лежит архитект версия v12.0.3170.16989 :)
Камрады! Вот такая штука в 2009-ой не работает. Хотел бы знать почему.
type TGLsizei = Integer; TGLuint = Cardinal; PGLuint = ^TGLuint; type TwglGetProcAddress = function(ProcName: PChar): Pointer; stdcall; TMyGenBuffers = procedure( n: TGLsizei; buffers: PGLuint); stdcall; var myGetProcAddress: TwglGetProcAddress; MyGenBuffers: TMyGenBuffers; Lib: THandle; procedure InitGL( var DC: HDC; var RC: HGLRC; const Handle: HWND); var P: TGLuint; PF: TPixelFormatDescriptor; Pixel: Integer; begin DC:= GetDC( Handle); with PF do begin nSize:=SizeOf( PF); nVersion:=1; dwFlags:=PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER; iPixelType:=PFD_TYPE_RGBA; cColorBits:=32; cDepthBits:=32; iLayerType:=PFD_MAIN_PLANE; end; Pixel:=ChoosePixelFormat( DC, @PF); SetPixelFormat( DC, Pixel, @PF); RC:=wglCreateContext( DC); wglMakeCurrent( DC, RC); Lib:=LoadLibrary( 'OpenGL32.dll'); myGetProcAddress := GetProcAddress( Lib, 'wglGetProcAddress'); MyGenBuffers:=myGetProcAddress( 'glGenBuffers'); // MyGenBuffers:=GetProcAddress(Lib, 'glGenBuffers'); MyGenBuffers( 1, @P); end;
@MyGenBuffers равно nil, хотя в 2007 Delphi код рабочий, адрес функции определяется нормально.
Также не работает и закомментированная строчка.
Значения переменных myGetProcAddress и Lib совпадают и в 2009, и в 2007.
А я вот со строками некоторое время кхм... разбирался.
Взяли да поменяли все обычные string на WideString. Блин. Ну не нужны мне широкие строки! А фиг жешь, не отключить.
Пока перелопатил всё - вместо string поставил AnsiString принудительно. Но ведь TStringList работает на string - т.е. происходит постоянное туда-сюда перегонялово.
И вот черт знает че делать. То ли переходить полностью на широкие строки, то ли нет... По идее все строковые ресурсы игры можно хранить отдельно, в WideString, а двиг если и юзает строки внутри - идентификаторы всякие, имена файлов например - за глаза обычной AnsiString хватит же. Тада нужны TStringList, THashedStringList ориентированные на AnsiString, а свои велосипеды городить как-то нехочется.
Блин, лажа. Кто-нидь столкнулся с этим?
PS:chemodansama
Может у тебя как раз с string/AnsiString трабла?
Новая идеология гласит
>The IDE is fully Unicode-enabled, from top to bottom, left to right, and front to back. The entire IDE itself is now a Unicode-based application, requiring that all components and design-time code be based on the UnicodeString type as well. Unicode characters are fully supported in identifiers and strings.
Весь код использующий стандартные функции (string, copy, pos, TStringList и т.п.) работает так же как и раньше. Обратить внимание нужно на те места где
>Code Constructs that are Dependent on Character Size
>Some operations do depend on character size. The functions and features in the following list also include a “portable” version when possible. You can similarly rewrite your code to be portable, that is, the code works with both AnsiString and UnicodeString variables.
>SizeOf(<Char array>) — use the portable Length(<Char array>).
>Move(<Char buffer>... CharCount * SizeOf(Char)) — use the portable Move(<Char buffer> ,,, CharCount * SizeOf(Char)).
>Stream Read/Write — use the portable AnsiString, SizeOf(Char) or the TEncoding class.
>FillChar(<Char array>, <size>, <AnsiChar>) — use *SizeOf(Char) if filling with #0, or use the portable StringOfChar function
>GetProcAddress(<module>, <PAnsiChar>) — use the provided overload function taking a PWideChar.
>Casting or using PChar to do pointer arithmetic — Use the portable {IFDEF} PByte = PChar, at the top of the file. Or use the {POINTERMATH <ON|OFF>} directive to turn on pointer arithmetic for all typed pointers, so that increment/decrement is by element size.
ссылка в хелпе: ms-help://embarcadero.rs2009/devcommon/unicodeinide_xml.html
там все есть:)
Я лично абсолютно доволен. Приведение существующего кода под новые стандарты у меня заняло дня три, не больше. Причем новый код обратно совместим, что немаловажно!
Ага, читал. Эт все наверно читали кто столкнулся с такой фигнёй )
chemodansama
Косяк скорее всего тут
type вместо TwglGetProcAddress = function(ProcName: PChar): Pointer; stdcall; надо TwglGetProcAddress = function(ProcName: PAnsiChar): Pointer; stdcall;
Тема в архиве.