ДельфинарийФорум

Релиз Delphi 2009 (Tiburon) 25 августа (комментарии) (2 стр)

Страницы: 1 2
#15
14:12, 23 сен 2008

DROnik
>У тебя из жж код работает?
спасибо, пофиксил

тока сегодня буду ставить триал )

#16
0:37, 17 окт 2008

Да что за фигня.
У меня триал установился без исходников rtl-ля?

Это так надо или у меня какойто глюк?
ЗЫ: сорци позарез нужны. Я без них не представляю программирования :). Они — лучше всякой документации :)

#17
11:21, 17 окт 2008

*vmr
Триальная без исходников наверно.
На торрентах сейчас лежит архитект версия v12.0.3170.16989 :)

#18
11:20, 18 окт 2008

Камрады! Вот такая штука в 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.

#19
19:35, 20 ноя 2008

А я вот со строками некоторое время кхм... разбирался.
Взяли да поменяли все обычные string на WideString. Блин. Ну не нужны мне широкие строки! А фиг жешь, не отключить.
Пока перелопатил всё - вместо string поставил AnsiString принудительно. Но ведь TStringList работает на string - т.е. происходит постоянное туда-сюда перегонялово.
И вот черт знает че делать. То ли переходить полностью на широкие строки, то ли нет... По идее все строковые ресурсы игры можно хранить отдельно, в WideString, а двиг если и юзает строки внутри - идентификаторы всякие, имена файлов например - за глаза обычной AnsiString хватит же. Тада нужны TStringList, THashedStringList ориентированные на AnsiString, а свои велосипеды городить как-то нехочется.
Блин, лажа. Кто-нидь столкнулся с этим?

PS:chemodansama
Может у тебя как раз с string/AnsiString трабла?

#20
12:45, 21 ноя 2008

Новая идеология гласит

>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
там все есть:)

Я лично абсолютно доволен. Приведение существующего кода под новые стандарты у меня заняло дня три, не больше. Причем новый код обратно совместим, что немаловажно!

#21
12:49, 21 ноя 2008

Ага, читал. Эт все наверно читали кто столкнулся с такой фигнёй )

#22
12:50, 21 ноя 2008

chemodansama
Косяк скорее всего тут

type
 вместо
  TwglGetProcAddress = function(ProcName: PChar): Pointer; stdcall;
 надо
  TwglGetProcAddress = function(ProcName: PAnsiChar): Pointer; stdcall;
Страницы: 1 2
ДельфинарийФорум

Тема в архиве.