Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];

Вниз

Определить тип данных   Найти похожие ветки 

 
Сергей   (2014-03-25 11:06) [0]

Var I:int64; B:Byte;W:word;
Procedure Proc1(e:int64); Begin {код}end;
Можно ли определить в коде самой процедуре что ей передаётся т.е. чиловое значение Proc1(34) или переменная какого типа Proc1(b);Proc1(w);Proc1(I);? Как это сделать ?


 
clickmaker ©   (2014-03-25 11:08) [1]

> Можно ли определить в коде самой процедуре что ей передаётся

нет


 
Германн ©   (2014-03-25 11:29) [2]

http://www.delphibasics.ru/Overload.php


 
sniknik ©   (2014-03-25 11:35) [3]

в коде можно определить тип у вариантов, а не у "жесткого" типа.
+ можно конечно сделать несколько "перекрытых" (overload)  процедур... но это не в коде будет определятся, а на этапе компиляции. какую процедуру подставить... ну весьма не надежно/не очевидно если хочешь писать так как написал - Proc1(34) .


 
Ega23 ©   (2014-03-25 11:37) [4]

Можно, но извращённо.

procedure TForm9.Button2Click(Sender: TObject);
var
 b: Byte;
 w: Word;
 i: Integer;
 i64: Int64;
begin
 Foo(b);
 Foo(w);
 Foo(i);
 Foo(i64);
 Foo("foo");
end;

procedure TForm9.Foo(Value: Variant);
begin
 case VarType(Value) of
   varByte   : ShowMessage("Byte");
   varWord   : ShowMessage("Word");
   varInteger : ShowMessage("Integer");
   varInt64  : ShowMessage("Int64");
   else
     ShowMessage("Unknown");
 end;
end;



 
Сергей   (2014-03-25 11:50) [5]

Ega23, спасибо это видимо то что нужно! попробую!
Вот только с числовыми жёсткими значениями как быть ? 2? 234? 34567? и т.д


 
Ega23 ©   (2014-03-25 11:53) [6]


> Вот только с числовыми жёсткими значениями как быть ? 2?
>  234? 34567? и т.д

ЕМНИП, они к ближайшему диапазону будут приведены.
Ну там, 2 - varByte, 234 - varWord и т.п.
Если только явно не приводить:
Foo(Integer(2));

Но на всякий ещё раз напоминаю: это - изврат, неоптимально, адъ и Израиль.


 
Сергей   (2014-03-25 11:58) [7]

Ega23, жаль! :-( Не то!
У меня вопрос стоит так:
"Жесткое" ли число (т.е. в виде чисел) или всё такие переменная? (типа int64).


 
clickmaker ©   (2014-03-25 12:05) [8]

> [7] Сергей   (25.03.14 11:58)

ты вообще представляешь, как параметры типа значение в функцию передаются?


 
Сергей   (2014-03-25 12:09) [9]

clickmaker, незнаю представляю или нет я вопрос задаю так как мне нужно.
=======================================
Попробую выразить еще так:
Const i64c:int64=0;
Var i64:int64;
{.....}
i64:=0;
Proc1(0); Proc1(i64); Proc1(i64c);
ноль “0” передавать в процедуру можно! Но если это переменная или константа то она не может быть нулём и нужно выдать ошибку. Реально ли такое сделать ?


 
Inovet ©   (2014-03-25 12:11) [10]

Можно. Нало пойти по стеку на адрес возврата и там поковырять на предмет константности переданного значения. Вот это будет уже полный
> изврат, неоптимально, адъ и Израиль.


 
Inovet ©   (2014-03-25 12:12) [11]

> [9] Сергей   (25.03.14 12:09)
> clickmaker, незнаю представляю или нет я вопрос задаю так как мне нужно.

А надо представлять. В хелпе всё описано. Дебагер имеется.


 
Ega23 ©   (2014-03-25 12:13) [12]


> У меня вопрос стоит так:


http://www.gunsmoker.ru/2008/10/x-y-z.html
Прочитай внимательно и подумай: не твой ли это случай?
Без обид.


 
Inovet ©   (2014-03-25 12:18) [13]

> [9] Сергей   (25.03.14 12:09)
> Но если это переменная или константа то она не может быть
> нулём и нужно выдать ошибку.

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

А вообще меняй подход, таких требований быть не должно, раз есть - значит что-то неправильно.


 
Сергей   (2014-03-25 12:20) [14]

Ega23, в 1 вопросе я получил ответ. Но не тот что нужно. Вот поэтому его поставил по другому.


 
Сергей   (2014-03-25 12:23) [15]

Inovet, ну хорошо! Бог с ней с константой. :) А переменную отличить от "страхомудия" типа числа (констаннты) можно?


 
sniknik ©   (2014-03-25 12:25) [16]

> делфийскую константу и извращёнными способами чаще всего не отловишь
+
"делфийская" типизированная константа в зависимости от настроек компиляции легко превращается в глобальную переменную.

т.е. в "извращенные способы" нужно еще "вкрутить"метод определения настроек с какими компилировалось.
это так, для "полного счастья".


 
clickmaker ©   (2014-03-25 12:31) [17]

> ноль “0” передавать в процедуру можно! Но если это переменная
> или константа то она не может быть нулём

Взаимоисключающие параграфы детектед


 
Inovet ©   (2014-03-25 12:33) [18]

> [15] Сергей   (25.03.14 12:23)
> А переменную отличить от "страхомудия" типа числа (констаннты) можно?

Ну вот сам подумай для чего нужна функция (подпрограмма) кроме того, чтобы не повторять один и тот же код в нескольких местах? А нужна она ещё и для того, чтобы работала одинакого независимо от способа вызова и способа передачи параметров. Ты же хочешь в точности обратного.


 
Сергей   (2014-03-25 12:34) [19]

clickmaker, не цепляйся к словам :-)
Ноль процедуре передавать можно, но если нулейвая переменная то процедура должна выдать что ПЕРЕМЕННАЯ НЕ МОЖЕТ БЫТЬ НУЛЕВОЙ, т.е. она считается "неопределена" для использования в программе (прецедуре). Так понятно ?


 
Inovet ©   (2014-03-25 12:35) [20]

> [17] clickmaker ©   (25.03.14 12:31)
> > ноль “0” передавать в процедуру можно! Но если это переменная
> > или константа то она не может быть нулём
>
> Взаимоисключающие параграфы детектед

Видимо, надо вопрос ставить так: как сделать, чтобы в переменной, которая там куда-то вдруг может быть передана в качестве значения параметра, нельзя было сохранить 0, потому что 0 для неё не имеет смысла.


 
Ega23 ©   (2014-03-25 12:44) [21]


> Ноль процедуре передавать можно, но если нулейвая переменная
> то процедура должна выдать что ПЕРЕМЕННАЯ НЕ МОЖЕТ БЫТЬ
> НУЛЕВОЙ, т.е. она считается "неопределена" для использования
> в программе (прецедуре). Так понятно ?


Это неправильная архитектура.
Процедура не должна ничего знать о природе входного параметра. У тебя вообще может быть в качестве входного параметра результат выполнения цепочки функций: Foo(Func1(Func2(Func3(Твоя_Константа))))
Как ты такое будешь отслеживать? Или геттер интерфейса, который реально реализован ХЗ где. В MSExcel каком-нибудь.


 
Сергей   (2014-03-25 12:47) [22]

Inovet. ДА!
И не только ноль для  неё бесмыслен но и другие числа диапазана Byte,word,Cardinal  и других всех доступных числел, КРОМЕ ЧИСЕЛ ДИАПАЗОНА Int64;
Можно выразить так:
Переменная должна быть Int64 и значение её должно быть
от -9223372036854775800 до (-9223372036854775800+100000), а если оно вне этих пределов, то это считается как обычное число(констанна), а не переменная Int64. НО БЕДА КОГДА "ЗАБЫВАЕШЬ" ПРИСВОИТЬ ПЕРЕМЕННОЙ ЗНАЧЕНИЕ НУЖНОГО ДИАПАЗАНА и она у тебя ноль или же 34 или 3455 нельзя ведь понять, что это переменная (int64),  а не просто чило или число другого типа (Byte, Word);


 
Inovet ©   (2014-03-25 12:47) [23]

> [21] Ega23 ©   (25.03.14 12:44)

Да много чего может быть. Элемент массива/структуры/класса в которых нельзя хранить 0, но мы будем хранить, а проверять в левой функции, ага.

Правильно проверять валидность там, где хранится/получается. Нельзя 0, значит сделать обёртку над этим и при присвоении поднимать исключение.


 
Inovet ©   (2014-03-25 12:50) [24]

> [22] Сергей   (25.03.14 12:47)

Когда забываешь присвоить, там будет чёрт лысый, а не ноль, кроме глобальных переменных, и то в самом начале.


 
Сергей   (2014-03-25 12:51) [25]

>обёртку над этим и при присвоении поднимать исключение.
поднимать исключение - Для меня это сложно. :-)
Я хотел проще:
В процедуре вписать: если Int64 не того диапазона что нужно ШовМессаг("неразмечаена переменная"). Типа того.


 
Inovet ©   (2014-03-25 12:56) [26]

> [25] Сергей   (25.03.14 12:51)

Поднять исключение не сложнее ШовМесаги, а толку значительно больше.


 
clickmaker ©   (2014-03-25 12:56) [27]

> если Int64 не того диапазона

ну и кто мешает написать?
if (param < min) or (param > max) then ШовМессаг("неразмечаена переменная")


 
Сергей   (2014-03-25 12:58) [28]

Inovet, но это если ты знаешь как это делать. а если я незнаю то с этим еще нужно разбираться.


 
Inovet ©   (2014-03-25 13:02) [29]

> [27] clickmaker ©   (25.03.14 12:56)
> if (param < min) or (param > max) then ШовМессаг("неразмечаена переменная")

Да, но для просто 123 не надо ШовМасаг делать. Вот ведь незадача.


 
Ega23 ©   (2014-03-25 13:04) [30]


> Inovet, но это если ты знаешь как это делать. а если я незнаю
> то с этим еще нужно разбираться.


Вот это и есть та самая классическая сага об XYZ.
Ты, когда задаёшь вопрос, описывай именно саму задачу, а не то, как ты считаешь, как её решать.


 
Сергей   (2014-03-25 13:06) [31]

clickmaker, КАК Я ПОЙМУ ЧТО В ПРОЦЕДУРУ ПЕРЕДАНА НЕРАЗМЕЧЕННАЯ ПЕРЕМЕННАЯ! ПОДЧЕРКИВАЮ ПЕРЕМЕННАЯ ТИПА int64, ЕСЛИ ОНА БУДЕТ НУЛЁМ ИЛИ ДРУГИМ ЗНАЧЕНИЕМ ? А самой процедуре передавать можно любые значения. А вот если это ИЗ(!) int64-переменной не того диапазона то она считается неразмеченной ("испорченной")
Summ1,Suuma2:int64;
Proc1(Summa1);
Если переменные размечены
Summ1 = -9223372036854775800+1
Suuma2 = -9223372036854775800+2
то можно понять что передалось соответсвующая переменная имеющая свой ИД, а не просто число какое нибудь. Или случайно битая Summ1 которая оказалась =0 или другого диапазона
Может так понятно ?! :-)


 
clickmaker ©   (2014-03-25 13:08) [32]

> то можно понять что передалось соответсвующая переменная
> имеющая свой ИД, а не просто число какое нибудь

так это и есть эти самые min и max
может, так понятно?)


 
sniknik ©   (2014-03-25 13:09) [33]

> а если я незнаю то с этим еще нужно разбираться.
не разбираться как сделать нафантазированное нужно, а учится, разбираться как оно работает на самом деле, и после "фантазировать" уже исходя из знаний.

однако есть разница.


 
sniknik ©   (2014-03-25 13:12) [34]

> Если переменные размечены
переменные не размечены, тип это не метка данных (если не вариант), а "трафарет" как на эти данные смотреть...
один и тот же байт может быть и отдельным и частью интеджера/ворда/... даже строки, причем в одно и то же время, в зависимости через какой "трафарет" на него смотрят.


 
Inovet ©   (2014-03-25 13:13) [35]

> [31] Сергей   (25.03.14 13:06)
> то можно понять что передалось соответсвующая переменная
> имеющая свой ИД, а не просто число какое нибудь. Или случайно
> битая Summ1 которая оказалась =0 или другого диапазона

Чем случайная последовательность битов отличается от неслучайной, если они находяться в одном разрешённом диапазоне?

Не занимайся ерундой - это тупиковый путь.


 
Ega23 ©   (2014-03-25 13:15) [36]


> clickmaker, КАК Я ПОЙМУ ЧТО В ПРОЦЕДУРУ ПЕРЕДАНА НЕРАЗМЕЧЕННАЯ
> ПЕРЕМЕННАЯ! ПОДЧЕРКИВАЮ ПЕРЕМЕННАЯ ТИПА int64


Никак.

var
 a,b: Int64;
begin
 a := ...;
 b := ...;
 // Типа, "разметили" обе.
 Proc(a+b);
end;


Это не на уровне процедуры нужно определять.


 
Inovet ©   (2014-03-25 13:16) [37]

Кстати, предупреждения компилятора о неинициализированных переменных мы, конечно же, игнорируем или совсем поотключали, чтобы не мешали, не ошибки ведь?


 
Сергей   (2014-03-25 13:19) [38]

sniknik, а мне нужно чтобы Int64 иммела свой ИД нужного диапазона и далее их использовать как метки т.е если
Summ1 = -9223372036854775800+1
Suuma2 = -9223372036854775800+2
и в процедуру приходит  "первое значение" то программа "понимает" что это "первое" значение и другие процедуры тоже будут понимать эту привязку (метку). но беда если их забыть "разметить" нужным диапазоном или они будут =0 то как отличить Summ1 от Suuma2 от чилового значения ?


 
turbouser ©   (2014-03-25 13:19) [39]


> Сергей

А какая цель преследуется? Т.е. зачем надо определять тип данных?


 
sniknik ©   (2014-03-25 13:20) [40]

+
Procedure Proc1(a: word); Begin {код}end;
и
Procedure Proc1(a, б: byte); Begin {код}end;
не отличаются в стиле передачи параметра, и там и там будет задействован регистр AX, т.е. если подменить формальное описание при работе с dll например, то можно задать для первого 2мя переменным а для второго наоборот одной... для компа без разницы.
просто это МЫ ПРИНИМАЕМ что в первом случае с ним работаем как с целым, а во втором как с двумя половинками... НАМ, людям, так удобнее.


 
sniknik ©   (2014-03-25 13:21) [41]

> sniknik, а мне нужно чтобы Int64 иммела свой ИД нужного диапазона и далее их использовать как метки т.е если
а мне нужен дворец на багамах и гарем из 365 наложниц... но реальность она несколько иная.


 
Ega23 ©   (2014-03-25 13:22) [42]

type

 TMyInt64 = record
   ID: Int64;
 end;

procedure Foo(Value: TMyInt64);
begin
 if Value.ID - размеченная then
   Proc1(Value.ID)
 else
   ShowMessage(неразмечаена переменная)
end;


И теперь сама Proc1 может принимать любые значения Int64, а вот Foo - уже только то, что ты туда осознанно передал.


 
Ega23 ©   (2014-03-25 13:24) [43]


> и гарем из 365 наложниц


Выходные только по високосным годам?


 
clickmaker ©   (2014-03-25 13:26) [44]

> Выходные только по високосным годам?

одна из наложниц по двойной ставке работает


 
Inovet ©   (2014-03-25 13:33) [45]

> [42] Ega23 ©   (25.03.14 13:22)
> TMyInt64 = record
>   ID: Int64;
> end;

Тогда уж класс MyID с конструкторами, сетерами и гетерами. Хм, 365 штук, да.


 
clickmaker ©   (2014-03-25 13:34) [46]

> Тогда уж класс MyID с конструкторами, сетерами и гетерами.
> Хм, 365 штук

с блэкджеком и шлюхами. 365 штук


 
Сергей   (2014-03-25 13:47) [47]

Ega23, ты знаешь мысль очень хорошая(!) сделать через  TmyInt64. Спасибо большое!
Вот только...
Например вот так у меня получится...
 TMyInt64 = record    ID: Int64;   end;
Procedure Proc1 (Value:: Variant)
begin
case VarType(Value) of
   TMyInt64   :  ShowMessage("Это переменная TmyInt64 проверить размеченность Value.ID  и т.д.");
   else      ShowMessage(“Обычное Числовое значение НЕ TmyInt64 ”);
 end;
ПРАВИЛЬНО ЛИ Я НАПИСАЛ? (еще не проверял)
Будут ли “хаваться” и определяться при:
Var   I64:TMyInt64;
Proc1( I64);
Proc1(56234);


 
clickmaker ©   (2014-03-25 13:54) [48]

> Будут ли “хаваться”

не будут. Потому что для Variant не определен TMyInt64.
Если TMyInt64 сделать классом, то можно юзать if (Value is TMyInt64)


 
Ega23 ©   (2014-03-25 13:59) [49]


> Сергей   (25.03.14 13:47) [47]
>
> Ega23, ты знаешь мысль очень хорошая(!) сделать через  TmyInt64.
>  Спасибо большое!
> Вот только...


Блин. Ну ты опять через задницу всё переиначил.

Давай с самого начала: какая стоит задача? Глобальная.


 
Сергей   (2014-03-25 14:07) [50]

Ega23,
Так... :-) Первый шаг сделан: TMyInt64 = record    ID: Int64;   end; размечаем глобально.
Нужно сделать процедуру Proc1 (а таких процедур будет не одна) которая будет “хавать” обычные числа и данные типа TmyInt64! внутри Proc1  чтобы можно было разобраться - это данные  типа TmyInt64 или это другие данные (числовые других переменных, (не особо важно))
Вот так теперь стоит вопрос.


 
Сергей   (2014-03-25 14:20) [51]

clickmaker, ну вот пробы сделал через  Class а не через record вот только число оно "хавать" не хочет

Type TlvLabel=Class ID:int64;end;
Var m1:TlvLabel;

Procedure Proc1(Value:TObject);
Begin
    if (Value is TlvLabel)  then Begin end;//  ShowMessage("Это переменная TmyInt64 проверить размеченность Value.ID  и т.д.");
   //else      ShowMessage(“Обычное Числовое значение”);

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Proc1(m1);
Proc1(2333);
end;


 
brother ©   (2014-03-25 14:21) [52]

те с миру по нитке и накодишь?


 
Сергей   (2014-03-25 14:27) [53]

brother, ну раз так получается...    дак шож делать :-)


 
Jeer ©   (2014-03-25 14:35) [54]

>дак шож делать :-)

Брось дурью маяться - есть места на замену гастарбайтеров.
Адресок могу подсказать.


 
clickmaker ©   (2014-03-25 14:38) [55]

> только число оно "хавать" не хочет

ну сделай боксинг, если уж знаешь толк в извращениях
Proc1(TObject(2333));


 
MBo ©   (2014-03-25 14:39) [56]

Про проблему X-Y-Z уже вспоминали?


 
Inovet ©   (2014-03-25 14:41) [57]

> [56] MBo ©   (25.03.14 14:39)
> Про проблему X-Y-Z уже вспоминали?

А то. В самом начале ещё.


 
Сергей   (2014-03-25 14:43) [58]

Причем тут извращения...
Можно ли сделать чтобы процедура «хавала» данные (числовые) и типы мной созданные ? А внутри процедуры их отличать ?


 
brother ©   (2014-03-25 14:52) [59]

> процедура «хавала»

я думал разговор там про пипл... а тут (


 
Ega23 ©   (2014-03-25 15:04) [60]


> Ega23,
> Так... :-) Первый шаг сделан: TMyInt64 = record    ID: Int64;
>    end; размечаем глобально.
> Нужно сделать процедуру Proc1 (а таких процедур будет не
> одна) которая будет “хавать” обычные числа и данные типа
> TmyInt64! внутри Proc1  чтобы можно было разобраться - это
> данные  типа TmyInt64 или это другие данные (числовые других
> переменных, (не особо важно))
> Вот так теперь стоит вопрос.


Нет. Вопрос стоит не так. Это - твоё видение решения некой задачи. Следствие, так сказать.
Я же тебя спрашивал про задачу. Какова причина "размечания"?


 
RWolf ©   (2014-03-25 15:13) [61]


> [60]

я так понял топикстартера, что это банально переменная, которой никто ничего не присвоил. Решение в лоб — Variant.


 
Ega23 ©   (2014-03-25 15:16) [62]


> я так понял топикстартера, что это банально переменная,
> которой никто ничего не присвоил. Решение в лоб — Variant.


Было уже. Он чего-то другого хочет.


 
clickmaker ©   (2014-03-25 15:23) [63]

да уже практически всё было
- variant
- tobject
- max, min
Осталось предложить индусский народный метод: переводить число в строку и проверять длину


 
Сергей   (2014-03-25 17:26) [64]

Ega23, причина размечания в том, что каждая переменная должна быть как метка (на таблицу) и каждая из процедур Proc1, Proc2 и т.д. должна принимать числовое значение и метку,  а также "понимать", что  это числовое значение или метка. И вот если сделать Var a, b:int64; и забыть присвоить им уникальный ИД, (нужного диапазона) запустить в Proc1,Proc2 и т.д. то процедуры не будут видеть разницу между a и b и "0". Вот почему я изначально задал вопрос: Можно ли прицедуре понимать что это Int64, а не просто числовое значение.
Type TlvLabel=Class ID:int64;end; Var A:TlvLabel - идея хорошая! тем более,что случано не присвоишь A:=234; - Это очень даже к стати! Но теперь вопрос как добиться что-бы в процедуру можно было "заганять" TlvLabel и числовые значения ? а внутри процедур определять  мол это TlvLabel или просто число.


 
RWolf ©   (2014-03-25 17:35) [65]

в [2] ответ прозвучал уже.


 
Inovet ©   (2014-03-25 17:40) [66]

> [64] Сергей   (25.03.14 17:26)

Не надо разные сущности через одну дырку в процедуру пропускать а вней потом определять что там пришло.

Должны быть вместе ID : TMyID и Val : Int64 к нему привязанное - делай класс с двумя такими полями, может, и рекорд хватит. Его и передавай в процедуру. О чём тебе всю ветку с разных сторон пытаются объяснить. Всё, ничего постороннего в процедуру не попадёт, а непротиворечивость ID и Val отслеживай в самом классе. А может окажется, что и этой обсуждаемой процедуре самое место в этом самом классе.


 
Сергей   (2014-03-25 18:00) [67]

Всем спасибо за внимание и участие. Но это всё не ТО что нужно. У меня всё работает нормально и всё процедуры,а их более 200 построены на этом. Беда только в том что переменной забываешь делать GetID(Val) чтобы ей Val присваивался уникальный ИД в (нужном диапазоне) и получаешь "коварный удар", что процедуры её воспринимают как число, как ноль и нет разницы между переменными Val1 и Val2 если они равны нулю. Да и как я вас понял, понять, что это не ноль, а переменная тоже невозможно. Надоело получать такие "удары". Я думал может это как-то можно решить т.е. так как хотелося-бы.
Еще раз всем спасибо за внимание.


 
Sha ©   (2014-03-25 21:00) [68]

опиши задачу на уровень выше, что надо сделать, а не то как ты это делаешь


 
Сергей   (2014-03-25 22:35) [69]

Да всё уже! - Не нужно! Спасибо! Тема закрыта.
Я уже свои мысли перестроил! т. е. действительно верно было сказано, что разные типы данных нужно и «толкать» разным процедурам, а не в смесь в одну! тем более не так уж их и много процедур которые надо будет переделывать, да и не сложно . А с этим проблем нет.
В будущем понадобится разобраться с конструкторами если можно киньте ссылку на простейший пример. т. е. нужно будет Proc1 использовать как Proc1(a:int64); Proc1(a,b:int64); Proc1(a,b,c:int64);
т.е. Чтобы одну процедуру можно было использовать с разным количеством одинаковых параметров. Такое сложно сделать ? Через конструктор как-то ?


 
Sha ©   (2014-03-25 22:43) [70]

"Overload" F1 "Overloading procedures and functions"


 
Сергей   (2014-03-25 23:13) [71]

Sha, СПАСИБО!
Хм... неужели всё так просто, т.е. дописуй к процедуре overload; и всё будет в порядке!



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.64 MB
Время: 0.046 c
2-1395260728
alexdn
2014-03-20 00:25
2015.09.10
ComboBox от TMS


15-1420742668
Kerk
2015-01-08 21:44
2015.09.10
О безопасности программ на Delphi


15-1409765726
Павиа
2014-09-03 21:35
2015.09.10
Осторожно. Новый вид атак.


2-1395227743
Вова
2014-03-19 15:15
2015.09.10
нужен исходник простого форматтера кода


2-1395662657
Александр_2012
2014-03-24 16:04
2015.09.10
Убрать нули из визуализации





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский