Текущий архив: 2008.11.30;
Скачать: CL | DM;
ВнизД2009 Найти похожие ветки
← →
федот (2008-08-30 18:35) [120]var
C: TMyClass<Integer>;
begin
TMyClass<Integer>.Create.Free;
end;
← →
федот (2008-08-30 18:40) [121]Вообщем харе народ пугать, оба примера которые вы привели отлично раюотают )
TMyClass = class
FMyRec: TAdvRec;
public
property MyRec: TAdvRec read FMyRec;
end;
var
C: TMyClass;
procedure TForm7.FormCreate(Sender: TObject);
begin
C := TMyClass.Create;
if C.MyRec.Prop then
beep;
end;
{ TAdvRec }
function TAdvRec.GetProp: boolean;
begin
result := true;
end;
ЗЫ версия 12.0.3155.16733
← →
jack128_ (2008-08-30 19:27) [122]
> C := TMyClass<Integer>.Create.Free;
Блин, лоханулся.. Глаз замылился, сорри.
← →
jack128_ (2008-08-30 19:29) [123]
> FMyRec: TAdvRec;
> public
> property MyRec: TAdvRec read FMyRec;
доступ через метод, а не поле сделай.
← →
федот (2008-08-30 19:43) [124]Internal Error
← →
oxffff © (2008-08-30 19:50) [125]Я тут слегка на них наехал за их реализацию Generics.
http://blogs.teamb.com/craigstuntz/2008/08/29/37832
Мои 6 и 8 комментарий.
← →
jack128_ (2008-08-30 22:10) [126]
> Я тут слегка на них наехал за их реализацию Generics.
ну в асм я не лез, а чисто на практике - невозможность использовать опрераторы над дженериками - это аццтой..
ПРидирка:
нельзя написать так:
var
Func: reference to function: Integer;
требуется описать тип
TFunc = reference to function : Integer;
var
Func: TFunc;
хотя например записи таким макаром нормально всегда описывались
← →
Prohodil Mimo © (2008-08-30 23:20) [127]Anatoly Podgoretsky © (29.08.08 19:21) [109]
потому и сказал, что первая.
а 8 именем Delphi назвать стыдно. Как такое вообще пропустили? Видать денег надо было срочно.
speller (29.08.08 20:35) [112]
Редактор изначально русские буковки в cp1251 сохраняет, но если вставить какую абракадабру в исходник - предлагает сохранить в utf-8.
Anatoly Podgoretsky © (29.08.08 23:31) [113]
Таже чепуха и в 2006
Поставте в регионе для неуникода кирилицу, и просить не будет в utf-8 сконвертировать.
← →
boa_kaa © (2008-08-30 23:23) [128]ммм-дааа... была у заюшки избушка лубяная, а у лисы ледяная...
← →
KilkennyCat © (2008-08-30 23:26) [129]
> boa_kaa © (30.08.08 23:23) [128]
а у подводного карлсона - термоядерный реактор!
← →
boa_kaa © (2008-08-30 23:30) [130]
> KilkennyCat © (30.08.08 23:26) [129]
поди, лиса, вон! :D
← →
KilkennyCat © (2008-08-30 23:33) [131]
> boa_kaa © (30.08.08 23:30) [130]
>
>
> > KilkennyCat © (30.08.08 23:26) [129]
>
> поди, лиса, вон! :D
уже: квартиру ищу...
← →
Anatoly Podgoretsky © (2008-08-30 23:37) [132]> Prohodil Mimo (30.08.2008 23:20:07) [127]
Кроме денег была и боязнь отстать от паровоза .NET
Так я знаю, что не будет, но я просто введу пару букв, хотя бы в комментарии, а не буду локализацию менять.
Так что эта особенно не новая, а существует с первых версий 200x и так не исправлено это, надо или все писать в UTF-8 или разрешить управлять этим в настройках.
← →
Prohodil Mimo © (2008-08-30 23:44) [133]Anatoly Podgoretsky © (30.08.08 23:37) [132]
не буду локализацию менять
отображение неуникода - не совсем локализация.
надо или все писать в UTF-8 или разрешить управлять этим в настройках
а зачем всё в UTF-8? появились нестандартные символы - в UTF-8, а если их нет, то и ASCII сойдёт. Хотя - дело вкуса, а мен лишние байты жалко :о)
← →
Anatoly Podgoretsky © (2008-08-31 00:17) [134]> Prohodil Mimo (30.08.2008 23:44:13) [133]
Если бы было так, то проблем бы не было, а проблема в том, если эти не попадающие под локализацию символы появлялись потом, то запрос уже не делался и преобразование тоже. Не знаю, может этот глюк решили в Д2007/9 но в 2006 ухо надо было держать тоже. Кстати в VS тоже самое, не уследишь при сохранение, то можно и потерять и не сразу это заметишь. А у меня подозрение, что студия лицензирована у Микрософт.
← →
speller (2008-08-31 05:31) [135]Сохраняешь русские буквы в ascii, отдаешь исходник индусу, а у него локаль другая и прощайте нужные буковки. А если это не тексты, а какие служебные символы? Индус просто что-то исправил в коде, ничего более не трогал, и тебе вернулись квадратики или какая еще хрень вместо текста.
← →
ggg (2008-08-31 09:37) [136]А что теперь будут возвращать функции Ord и Chr?
Как стоит переписать функции шифрования, которые используют посимвольные операции над байтами?
Т.е. если сейчас написать шифрование xor на БДС 2007, в 2009 функция скомпилируется, но результат будет различен и дешифровать без конвертации в AnsiString не удастся?
← →
speller (2008-08-31 10:11) [137]
> А что теперь будут возвращать функции Ord и Chr?
Вот такой кодvar
S: string;
begin
S := IntToStr(Ord("я"));
S := S + " ";
S := S + IntToStr(Ord("פּ"));
компилируется в// S := IntToStr(Ord("я"));
lea edx,[ebp-$04]
mov eax,$000000ff
call IntToStr
// S := S + " ";
lea eax,[ebp-$04]
mov edx,$0046421c
call @UStrCat
// S := S + IntToStr(Ord("פּ"));
lea edx,[ebp-$08]
mov eax,$0000fb44
call IntToStr
mov edx,[ebp-$08]
lea eax,[ebp-$04]
call @UStrCat
Русская буква осталась в ascii, а пробел пошел уже в юникоде... По-моему это глюк.
← →
speller (2008-08-31 10:24) [138]нет, пробел не в юникоде, загнал я
← →
Anatoly Podgoretsky © (2008-08-31 10:34) [139]> ggg (31.08.2008 9:37:16) [136]
Все нормально, не волнуйся.
← →
speller (2008-08-31 11:17) [140]На самом деле странно что вроде всё в юникоде, а ord на русской букве возвращает ascii значение. Или я просто чем-то не проникся?
← →
speller (2008-08-31 11:18) [141]что выдаст ord("я") на компе индуса?
← →
@!!ex © (2008-08-31 11:23) [142]> [141] speller (31.08.08 11:18)
Я так понимаю - зависит о того, в какой кодировке передана буква "я".
Не вижу проблемы.
← →
Anatoly Podgoretsky © (2008-08-31 11:26) [143]Код русской буквы "я", в соответствии с кодировкой.
> ord("я")
Откуда код? По всей видимости это в ANSI
← →
speller (2008-08-31 11:30) [144]
> зависит о того, в какой кодировке передана буква
Вне зависимости, в какой кодировке исходник, ascii или utf-8, результат ord("я") = 255. Т.е. компилятор во время компиляции делает преобразование из юникода в ascii. Что он сделает если буквы "я" нет в локали индуса? Подставит значение юникода и в результате получится ord("я") = 1103?
← →
Loginov Dmitry © (2008-08-31 12:27) [145]а что там сейчас с длинными комментами на русском?
← →
speller (2008-08-31 14:14) [146]а что было?
← →
ggg (2008-08-31 14:28) [147]Да не обязательно с комментариями. Если в строке были русские символы, то экран "уезжал" вправо пропорционально их количеству, а курсор оставался где-то слева, за границей области видимости.
Всё-таки как-то не убедительно с Ord :) Похоже, в случае с Ord("я") просто компилятор подставляет константу. Может для чистоты эксперимента попробуете строку взять из элемента формы?
← →
DVM © (2008-08-31 21:56) [148]В связи с тестированием Delphi2009 столкнулся с проблемкой, которой никак не могу найти удовлетворительного на мой взгляд решения.
Ранее пользовался функций:function InetAddr(const AHost: string): integer;
var
PHost:PChar;
HostEnt: PHostEnt;
begin
if AHost = "" then
result := INADDR_NONE
else
begin
PHost := PChar(AHost);
Result := inet_addr(PHost);
if Result = INADDR_NONE then
begin
HostEnt := GetHostByName(PHost);
if HostEnt <> nil then
Result := integer(pointer(HostEnt^.h_addr^)^);
end;
end;
end;
Функция прекрасно работала, пока string не превратился в WideString, а PChar в PWideChar. Хорошо, подумал я и поменял:function InetAddr(const AHost: AnsiString): integer;
var
PHost: PAnsiChar;
HostEnt: PHostEnt;
begin
if AHost = "" then
result := INADDR_NONE
else
begin
PHost := PAnsiChar(AHost);
Result := inet_addr(PHost);
if Result = INADDR_NONE then
begin
HostEnt := GetHostByName(PHost);
if HostEnt <> nil then
Result := integer(pointer(HostEnt^.h_addr^)^);
end;
end;
end;
Вроде бы все верно и действительно функция прекрасно работает в D7, но не работает в D2009, будучи вызвана, например, так:procedure TForm1.FormCreate(Sender: TObject);
begin
WSAStartup($101, WSA);
caption := inttostr(InetAddr("ya.ru"));
end;
В функцию, как мне кажется передается строка, но строка по-видимому становится WideString, хотя у меня в параметрах функции указано AnsiString и никаких сообщений компилятор не выдает. Странно как то.
Как бы мне заставить это работать в обеих версиях делфи?
← →
DVM © (2008-08-31 22:17) [149]Наше проблему, дело оказалось не в WideString
Переделал так:function InetAddr(const AHost: AnsiString): DWORD;
var
PHost: PAnsiChar;
HostEnt: PHostEnt;
begin
if AHost = "" then
result := INADDR_NONE
else
begin
PHost := PAnsiChar(AHost);
Result := inet_addr(PHost);
if Result = INADDR_NONE then
begin
HostEnt := GetHostByName(PHost);
if HostEnt <> nil then
Result := DWORD(pointer(HostEnt^.h_addr^)^);
end;
end;
end;
в файле Winsock поменялось INADDR_NONE = -1; на INADDR_NONE = DWORD($FFFFFFFF);
← →
федот (2008-08-31 22:21) [150]это правильно, смотрите варнинги, которые есть.
← →
DVM © (2008-08-31 22:24) [151]
> федот (31.08.08 22:21) [150]
варнинг только в D2009 появлялся, в D7 его не было, я поэтому как то среди прочих сообщений не обратил внимания сразу на него.
← →
DVM © (2008-08-31 22:27) [152]чтобы без варнингов работало в обеих версиях, пришлось исправить:
function InetAddr(const AHost: AnsiString): DWORD;
var
PHost: PAnsiChar;
HostEnt: PHostEnt;
begin
if AHost = "" then
result := DWORD($FFFFFFFF)
else
begin
PHost := PAnsiChar(AHost);
Result := inet_addr(PHost);
if Result = DWORD($FFFFFFFF) then
begin
HostEnt := GetHostByName(PHost);
if HostEnt <> nil then
Result := DWORD(pointer(HostEnt^.h_addr^)^);
end;
end;
end;
← →
федот (2008-09-01 20:15) [153]Новый билд 12.0.3163.16897, чую релиз.
← →
oxffff © (2008-09-01 21:17) [154]Намек понят.
← →
DVM © (2008-09-01 21:19) [155]Не не буду качать опять 600 мег. Теперь только релиз.
← →
oxffff © (2008-09-01 21:35) [156]Найден первый баг
TGenericRecord <T>: record = record
procedure DoSomething(aParam: T);
end;
procedure TForm1.FormCreate(Sender: TObject);
var a:TGenericRecord<integer>;
b:integer;
begin
a.DoSomething(5);
end;
procedure TGenericRecord<T>.DoSomething(aParam: T);
var a:integer;
begin
a:=integer((@aParam)^); // Он здесь, привет EDX регистру
showmessage(inttostr(a));
end;
:(
← →
oxffff © (2008-09-01 21:38) [157]
> федот (01.09.08 20:15) [153]
> Новый билд 12.0.3163.16897, чую релиз.
Неа, я теперь стал ожидать множество сервис паков.
Просто огромное количество.
Честно говоря нельзя быть настолько небрежным в отношении реализации языка.
← →
oxffff © (2008-09-01 21:43) [158]Приколько.
Я тут несколько высказался "демократично" насчет их реализации, я их не оскорблял, просто указал на некоторые изъяны.
Теперь. Очередной комментарий
Sergey Antonov Says: Your comment is awaiting moderation.
Повторяю в моих постах не было оскорблений, просто голые факты.
Интересно это связано как то с их оценкой роли России в мироустройстве.
← →
jack128_ (2008-09-01 22:59) [159]
> Найден первый баг
в версии 12,0,3128,15596 все нормально..
← →
oxffff © (2008-09-01 23:13) [160]
> jack128_ (01.09.08 22:59) [159]
У меня версия 12.0.3155.16733.
То есть получается они не делают, а ломают.
Нормально это исключение?
P.S. Включи оптимизацию и перестрой.
Страницы: 1 2 3 4 5 6 вся ветка
Текущий архив: 2008.11.30;
Скачать: CL | DM;
Память: 0.81 MB
Время: 0.02 c