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

Вниз

---|Ветка была без названия|---   Найти похожие ветки 

 
Style   (2003-03-12 10:53) [0]

Уже в течении полугода пишу программу ядерной безопасности. Программа принемает данные с определенной платы и записывает их в базу данных. Я выбрал Paradox. После многих неудачных опытов и попыток сменить базц на другой формат я всеже вернулся к Paradoxу.
Вообще вся база данных должна содержать седующую информацию

Дата и Время - (DateTime)
Концентрация U235_1 - (Float 20 знаков после запятой)
Концентрация U235_2 - (Float 20 знаков после запятой)
Концентрация U235_3 - (Float 20 знаков после запятой)
Концентрация U235_4 - (Float 20 знаков после запятой)
Oшибка 1 - (SmallInt)
Oшибка 2 - (SmallInt)
Oшибка 3 - (SmallInt)
Oшибка 4 - (SmallInt)
И еще четыре поля содержащие Memo данные

1. Моя неудачная попытка - использование Мемо полей.
База стала рости до немеренных размеров по непонятным причинам.
Пробывал разные форматы баз. Все попытки оказались неудачными.
т.к. из базы нужно удалять информацию на совсем!

Я поступил следующим образом: Оставил формат Paradox, А поля Мемо заменил на таблицу -> memos.db а в своей главной базе стал хронить указатили на ID в таблице с мемополями...

Самое страшное что в таблице memos. должны храниться тоже Doubleвские значения т.е. 20 знаков после запятой. т.е. Каждая запись в Base.db Должна хранить в себе 1024 Double значений из memos.db
Структуру memos.db я сделал следующую ID, I1,i2,i3,i4....i254 т.е у меня уместилось только 254 поля с данными.
4 строчки в этой таблице приндлежат 1 строчке в таблице base.db!

+ В программе существуют еще 2 таблицы const.db и const2.db в которых уже хранится около 400 констант программы. Для каждой записи Base.DB!

Так вот появилась следующая проблемма вся эта информация если я использовал QUERY! (так называемый SQL) начитывалась минимум секунд 40!Если использовать Locate то такая же картина.Причем объем memos.DB это 40000 строк по 256 Dooble полей..

Поэтому я отказался от SQL!

Стал использовать TTable и метод MoveBy..

Причем Если курсор находился примеру ближе к началу базы я сначала делал BOF а потом MoveBy дабы ускорить доступ к информации информации в memos.db

На Celerone 600
Получилась следующая картина: Начитка всей инфы если я перемещаюсь из начала в конец занимает меньше секунды, но если я перемещаю курсор в середину минимум секунд 16! Но только первая начитка т.е если я опять перемещаю курсор где нибудь по близости данные загружаются моментом!

Так вот в чем вопрос.. Мою программу юзают и более слабые Компы.. Как бы сделать быстрее.. Есть ли более оптимальное решение моей проблеммы????

P.S. простите меня за мою грамматику :)


 
Sheriff   (2003-03-12 10:56) [1]

мда... начало многообещающее...


 
Dred2k   (2003-03-12 11:16) [2]

"Нииииччччего не понимаю" (c) коллега
К сожалению, суть задачи улавливается с трудом.
Одно могу сказать точно - мемо поля парадокс хранит, скажем, не совсем оптимально. ;) Объем файлов действительно неадекватен объему хранимой инфы. Ну да ладно...
Диагноз - непроработанная структура таблиц.


> Дата и Время - (DateTime)
> Концентрация U235_1 - (Float 20 знаков после запятой)
> Концентрация U235_2 - (Float 20 знаков после запятой)
> Концентрация U235_3 - (Float 20 знаков после запятой)
> Концентрация U235_4 - (Float 20 знаков после запятой)
> Oшибка 1 - (SmallInt)
> Oшибка 2 - (SmallInt)
> Oшибка 3 - (SmallInt)
> Oшибка 4 - (SmallInt)
> И еще четыре поля содержащие Memo данные


Как я понял из вышенаписанного, таблица вообще одна - каждая запись является "неким состоянием некой системы" на момент времени. Ну и все. В чем проблема? Если искать хочешь по полям "И еще четыре поля содержащие Memo данные" - от мемо придется отказаться. Или только перебором.


> (так называемый SQL)

Самый обычный и полезный SQL. Не обижай его! ;))


 
Соловьев   (2003-03-12 11:18) [3]

Парадокс для ядерной безопасности.... а потом Чернобыль. :((((


 
Style   (2003-03-12 11:28) [4]

>> Dred2K
Вся проблемма заключается в быстроте доступа к данной информации.
А тратить время на базу данных мне не охота. Так как там и помимо того очень много математических расчетов и прочей ядерной лабуды.

>>каждая запись является "неким состоянием некой системы" на момент времени
да именно так. вообще в base.db должно максимум храниться 10000 точек. + 4 канала содержащии по 256 точек типа Double! + около 400 констант типа Double!

Меня волнует время получения этой информации и не более.

>>Самый обычный и полезный SQL. Не обижай его! ;))
Да ты прав самый обчный.. Как есть. т.е упрощенный (урезанный) до невозможности. :))


 
Style   (2003-03-12 11:29) [5]

>> Соловьев..

Да.. будем винить в этом Borland :))


 
Sergey13   (2003-03-12 11:49) [6]

2Style (12.03.03 10:53)
>Уже в течении полугода пишу программу ядерной безопасности
Ты меня извини, но ты пишешь рабочую систему или диплом/курсовик? Если первое то пора отсюда (из России) мотать. Хотя от этого уже не убежишь. 8-(
Если по ядерной безопасности проги пишет человек спрашивающий советов в форуме и использует для этого парадокс... Ну все, край... Это же ядерная угроза!!! 8-) или правильнее 8-(


 
Dred2k   (2003-03-12 11:49) [7]

> Вся проблемма заключается в быстроте доступа к данной
> информации. А тратить время на базу данных мне не охота.
Два взаимоисключающих желания. Поверь мне, забьешь на базу - хлебнешь с лихвой. Не будет радости потом расчеты делать...
> Так как там и помимо того очень много математических расчетов
> и прочей ядерной лабуды.
В идеале, конечно, вас должно быть двое...
Коль ты базы не любишь. ;)

> >каждая запись является "неким состоянием некой системы" на
> >момент времени
> да именно так. вообще в base.db должно максимум храниться
> 10000 точек. + 4 канала содержащии по 256 точек типа Double!
> + около 400 констант типа Double!
Ладно, давай от твоих терминов и толкнемся.
Точка - сущность. Все остальное - атрибуты. Для порядка - суррогатный ключ типа Integer. Вот и вернулись мы к одной таблице. С твоими любимыми блобами (ну или мемо). :)
Искать по каналам и константам ты не сможешь. Да и не нужно, как я понимаю. Возьмешь по периоду времени группу записей, пойдешь по ним и сделашь расчет (тут ты и мемо вынешь, и что угодно - и обработаешь). Вот и все.
> Меня волнует время получения этой информации и не более.
Пройтись даже по всем 10 штукам долго не займет.
И по сотне тоже. Расчет дольше будет ;)

>>Самый обычный и полезный SQL. Не обижай его! ;))
>Да ты прав самый обчный..
>Как есть. т.е упрощенный (урезанный) до невозможности. :))
Ну, в предыдущих вресиях BDE он еще хуже был... ;)
Зато локальный. А прикинь, как без него тяжко было бы. Оракл - муть ведь жуткая! ;)))



 
Style   (2003-03-12 11:51) [8]

Sergey13>> Скажем так это для Докторской десертации отдного человека :)


 
Dred2k   (2003-03-12 11:55) [9]


> Sergey13>> Скажем так это для Докторской десертации отдного
> человека :)

Блин, а я то уж думал - в интересах стратегической безопасности нашей Родины тут кумекаю....
Какой облом!!! ;)))


 
Style   (2003-03-12 12:10) [10]

Dred2k © >>
Наверное я немного не правильно описал свой жуткий вопрос?

От мемо полей я уже давно отказался..
Т.к. приходится делать из базы Delete и причем такой Delete Что бы совсем все данные пропадали в никуда.. А вот с Мемо полями это невозможно ;)

Дальше.. Представь такую картину.

Base.DB: (Максимум 10000 строк Далее удоляеться самая верхняя)
Date,ID, Dbl1, Dbl2, Dbl3, Dbl4, Int1,Int2,Int3,Int4;

Const.DB:
ID(из Base.DB), Dbl1....Dbl254

Const2.DB:
ID(из Base.DB), Dbl1....Dbl254

Memos.DB:
ID
(из Base.DB), Dbl1....Dbl254 (4 строчки для каждой записи в base.db)


т.е. Чтобы начитать информацию мне нужно..

Select * from Const where ID = :ID (ID из base.db)

var
Str: TStringList;

Str := TStringList.Create;

For i:= 1 to ConstQuery.FieldCount-1 do
begin
Str.Add(ConstQuery.Fields[i]
end;


Select * from Const2 where ID = :ID (ID из base.db)
Также начитываем

Select * from Memos where ID = :ID (ID из base.db)

Зачитывем в 4ре StringList-а Для 4 записей


Так Вот если я использую SQL это происходит секунд 40-50
Пришлось юзать MoveBy!


 
Style   (2003-03-12 12:12) [11]

Dred2k >> Да это ж я чтоб народ не пужался :)))
А потом кто его знает куды программа пойдет


 
Anatoly Podgoretsky   (2003-03-12 12:18) [12]

Ядерная безопасность и Парадокс не совместимы


 
Sheriff   (2003-03-12 12:26) [13]

...потому Парадоксом и называется... :)


 
Style   (2003-03-12 12:34) [14]

>> Anatoly Podgoretsky
Спорим совместимы: Программа отлично работает .. Тестируется на нескольких заводах. Я обезопасил все эти глюки сделал и реиндексацию в базе и т.д..
Меня волнует только скорость с таким количеством Double значений.


 
DarkGreen   (2003-03-12 12:35) [15]

2 Style (12.03.03 12:12)
Надеюсь ты не с Семипалатинска....
А то мы тут недалече... ;-))
Звиняюсь за оффтоп


 
Соловьев   (2003-03-12 12:38) [16]

Тут рядом идет обсуждение о крахе Парадокса раз в месяц... О какой безопасности и тем более ядерной можно говорить? Парадокс это настольная БД для хранения картотетки о домашних аудиозаписях. Конечно утрирую, но все-таки. Неужели компания занимающаяся ядерной безопасностью не может раскошелится на лицензионный Oracle, DB2 или хотя бы Interbase, Sybase, MS SQL?


 
Style   (2003-03-12 12:46) [17]

Плюс .. сама ядерная безопасность обеспечивается клиентской частью программы т.е. вне базы данных. База данных нужна только для хранения информации и анализа изменения концентрации U235.

Но иногда эту инфу нужно достать оперативно. Если учесть то что в базу она записываеться каждые 10-15 сек.


 
Anatoly Podgoretsky   (2003-03-12 12:53) [18]

Style (12.03.03 12:34)
Во первых признайся в каких городах ты обезопасил нам, некоторые смогут вздохнуть с облегчением.


 
Соловьев   (2003-03-12 12:53) [19]

2 Style (12.03.03 12:46)
Ты хоть не в Украине находишся? Где только дают заказы на разработку ПО для ядерных исследований? Там наверное деньги отмыть хотят. Все и так работает на ЕС-ках.


 
Sheriff   (2003-03-12 12:57) [20]

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


 
Dred2k   (2003-03-12 12:58) [21]


> Dred2k >> Да это ж я чтоб народ не пужался :)))
> А потом кто его знает куды программа пойдет

Мда... Опасения за безопасность моей любимой Родины снова усиливаются...
Ты пойми - парадокс в этом плане тебе не подойдет, раз уж все так запущено. Пароли ставить не пытайся - инженерку jIGGAe еще никто не отменял. Ну и многое что можно сказать, да ладно...

> Наверное я немного не правильно описал
Ну как получилось...
> свой жуткий вопрос?
Эээтт точно (c) т. Сухов
С этим уж проблем нет...

> От мемо полей я уже давно отказался..
> Т.к. приходится делать из базы Delete и причем такой Delete
> Что бы совсем все данные пропадали в никуда.. А вот с Мемо
> полями это невозможно ;)
А спорим - возможно! (блин, как все запущено...)

procedure PackTable(Table: TTable);
{ This routine copied and modified from demo unit TableEnh.pas
from Borland Int. }
var
{ FCurProp holds information about the structure of the table }
FCurProp: CurProps;
{ Specific information about the table structure, indexes, etc. }
TblDesc: CRTblDesc;
{ Uses as a handle to the database }
hDb: hDbiDB;
{ Path to the currently opened table }
TablePath: array[0..dbiMaxPathLen] of Char;
Exclusive: Boolean;
begin
if not Table.Active then raise EDatabaseError.Create(SDataSetClosed);
Check(DbiGetCursorProps(Table.Handle, FCurProp));
if StrComp(FCurProp.szTableType, szParadox) = 0 then begin
{ Call DbiDoRestructure procedure if PARADOX table }
hDb := nil;
{ Initialize the table descriptor }
FillChar(TblDesc, SizeOf(CRTblDesc), 0);
with TblDesc do begin
{ Place the table name in descriptor }
StrPCopy(szTblName, Table.TableName);
{ Place the table type in descriptor }
StrCopy(szTblType, FCurProp.szTableType);
bPack := True;
bProtected := FCurProp.bProtected;
end;
{ Get the current table"s directory. This is why the table MUST be
opened until now }
Check(DbiGetDirectory(Table.DBHandle, False, TablePath));
{ Close the table }
Table.Close;
try
{ NOW: since the DbiDoRestructure call needs a valid DB handle BUT the
table cannot be opened, call DbiOpenDatabase to get a valid handle.
Setting TTable.Active = False does not give you a valid handle }
Check(DbiOpenDatabase(nil, szCFGDBSTANDARD, dbiReadWrite, dbiOpenExcl, nil,
0, nil, nil, hDb));
{ Set the table"s directory to the old directory }
Check(DbiSetDirectory(hDb, TablePath));
{ Pack the PARADOX table }
Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False));
{ Close the temporary database handle }
Check(DbiCloseDatabase(hDb));
finally
{ Re-Open the table }
Table.Open;
end;
end
else if StrComp(FCurProp.szTableType, szDBase) = 0 then begin
{ Call DbiPackTable procedure if dBase table }
Exclusive := Table.Exclusive;
Table.Close;
try
Table.Exclusive := True;
Table.Open;
try
Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, nil, True));
finally
Table.Close;
end;
finally
Table.Exclusive := Exclusive;
Table.Open;
end;
end
else DbiError(DBIERR_WRONGDRVTYPE);
end;

Используешь так:

Что-то делаешь весь день с данными...
Удаляешь...
Удаляешь...
Удаляешь...
Удаляешь...
Удаляешь...
Удаляешь...
ОБА! А секретность!? -[]
И тогда:
Table.DisableControls;
try
Table.Open;
PackTable(Table);
finally
Table.EnableControls;
end;

Не забудь uses BDE, DBConsts.
Компили, дело верное. И будет тебе счастье.
Видишь, как просто открываются по-новой ранее упущенные клевые возможности. ;)

> Дальше.. Представь такую картину.
Да представил, представил...
Тебе один путь - вернуть мемо и не извращаться.
Писать его будешь как FieldByName("SuperMemo").AsString := строка с числами (лучше хранить через интежер, приводи Double к TDateTime - это и так одно и то же, потом изучи как работает
DateTimeToTimeStamp и TimeStampToDateTime). Точность абсолютная, а хранить просто (учитывая список значений ...).
Читать так же.

> Так Вот если я использую SQL это происходит секунд 40-50
Конечно. На каждую запись ты запрос мочишь! Ключи хоть есть по ID? Master-Detail, батенька! И только он для такой системы.
> Пришлось юзать MoveBy!
Это что это за MoveBy?! Ты что, заклыдваешься на прямое соответствие расположения записей в главной и подчиненных таблицах? Блин, трудный случай.


 
Style   (2003-03-12 13:16) [22]

Dred2k>>
Как же думаешь сколько времени займет PackTable

Ты что, заклыдваешься на прямое соответствие расположения записей в главной и подчиненных таблицах? Блин, трудный случай.
->> Именно прямое расположение другое и не нужно.. Представь что это просто некий Кэш.. в котором накапливается 10000 точек и в момент добавления 10001 10000 удаляется...


 
Style   (2003-03-12 13:17) [23]

>> т.е не 10000 а 1 я запись удаляется


 
Style   (2003-03-12 13:23) [24]

Народ и пожалуйста не оспаривайте мое "оптимальное решение"... Наоборот посоветуйте как мне сделать лучше и какую БД использовать в данной ситуации..
И так чтобы все это происходило быстро!


 
Соловьев   (2003-03-12 13:24) [25]

ИМНО, спецБД - написанную серьезной канторой, которые не новички в ядерной безопасноти...


 
Style   (2003-03-12 13:26) [26]

Sheriff -> Сам прибор это новый революционный подход в ядерной безопасности поэтому раскрывать его технологию я не вправе. А то что в аппаратной части есть свои блоки безопасности это естественно. Но изменение концентрации высчитывает сама программа Зате возвращает данные в прибор.. И уж только потом записывает их в базу..


 
Style   (2003-03-12 14:01) [27]

>>Anatoly Podgoretsky
Новосибирск, Омск, Электросталь :)) Страшно...


 
Soft   (2003-03-12 14:02) [28]

Изверг.

Ты хоть не под 95-ткой её ставишь?

А если программа неправильные данные в прибор вернет и что тогда... Скоро эхом грянет Cтрашный Русский ренесанс:(

По своему опыту не рекомендую использовать досявые базы. Выбрал когда-то DBISAM так два месяца работы просто так нафик пропали. Теперь использую Access, вроде не глючит. Программа тоже оборонного значения(для Украины).

Своему знакомому, когда он с таким примерно вопросом ко мне пришел я сказал, чтоб взял Access. Теперь у него все без проблемм работает, быстро и стабильно.


 
Dred2k   (2003-03-12 14:12) [29]

>Как же думаешь сколько времени займет PackTable
Думаю, ты и не заметишь. Конечно, если не собираешься заниматься абсолютно бесполезной упаковкой при каждом удалении записи.
А вот заметишь ты, причем очень быстро, насколько труден и фатален сизифов труд. Это когда тебе пару десятков констант придется добавить или точек штук пять, в крайнем случае... Тут-то ты о мемо и вспомнишь. ;)
(блин, а ведь зря звезды героя не дают за такие подвиги - сотни полей, надеюсь, автоматом создаешь или же все таки ... о, Боже!).
;))

> Именно прямое расположение другое и не нужно.. Представь что
> это просто некий Кэш.. в котором накапливается 10000 точек и > в момент добавления 10001 10000 удаляется...
"Толково придумано." (c) МВИН
Это фифошка, блин, какая-то получается. Сразу обсчитывать вносимую запись и сублимировать в результат не пробовал. На лету?
Зачем иметь только 10000, но последних? Только последних, но 10000?
;)

>Народ и пожалуйста не оспаривайте мое "оптимальное решение"... >Наоборот посоветуйте как мне сделать лучше
Да вот пытался.
>и какую БД использовать в данной ситуации..
>И так чтобы все это происходило быстро!
Мдаа.... Все ясно.
Мой фюрер, предлагаю поправить треуголку и учить матчасть.
;))

>ИМНО, спецБД - написанную серьезной канторой, которые не >новички в ядерной безопасноти...
Я за. И даже без ИМНО...
Думаю, если дисер свет увидет - на парадокс положат и вообще.
Все там по-другому будет и другими...


 
Sheriff   (2003-03-12 14:16) [30]

При таких исходных данных ничего путевого посоветовать нельзя.
А вообще задача разбивается минимум на 3 подзадачи:
- организация данных в БД
- занесение данных в БД
- выборка данных их БД

все это с соблюдением требований:
- надежность
- достоверность
- быстродействие

изходя из этих требований начинаем искать подходящую БД,
продумываем организацию данных (весьма немаловажно!),
и уж потом забиваем БД всякой белибердой и экспериментируем
на этих данных, оптимизируя быстродействие.
а по вопросу выборки вообще ничего конкретного сказано не было.
это все ИМХО...


 
Style   (2003-03-12 14:32) [31]

Soft>> Пробывал я на Access переводить. через ADO но база ACCESS тоже стала рости. Delete не всегда удолял на проч запись и в итоге база набирала 1Гб и вставала..

Dred2k © >> Я же писал что Мемо поля работали все было хорошо..
И удалялась инфа из БД вроде бы тоже. Но по абсолютно непонятным причинам База вставала раком.. т.е файлик набирал 2GB. Поэтому я начал извращатся.

Так вот в одних форматах не удалялась инфа вовсе.
В других скорость не устраивала.

Вернулся в парадокс и стал работать напрямую с Table..


 
Style   (2003-03-12 14:40) [32]

Dred2K->>
Зачем иметь только 10000, но последних? Только последних, но 10000?
===
Так хотят заказчики. Именно 10000 точек.. Так именно зарегистрирован прибор. Да и еще со старой программой которая вообще была написана на VisualBasic как раз в Украине не мной :)


 
Soft   (2003-03-12 14:42) [33]

Style>> Пробывал я на Access переводить. через ADO но база ACCESS тоже стала рости. Delete не всегда удолял на проч запись и в итоге база набирала 1Гб и вставала..

Сейчас я на работе, не поленись прислать мне на домашний адресс alife-soft@yandex.ru письмо с напоминанием, я тебе вышлю программный код сжатия базы Acess. А Delete не удаляет записи оно их только отмечает к удалению. Таковы уж заморочки и с Access.

А хочешь совсем просто быстро и стабильно - ставь Oracle Lite, PII-350 256M ОЗУ и полный кайф. Будет летать при любой(даже самой идиотской) конфигурации базы(и пользователей) :)


 
Style   (2003-03-12 14:45) [34]

Dred2K>>
Сейчас заполненная базад данных занимает 192 мега. т.е. сумма всех 4-х файлов.. Самый большой -> Memos.db

Sheriff>> А как мне надо было поступить если не Парадокс то что???
Тем более меня торопил заказчик.. Очень сильно торопил.


 
Style   (2003-03-12 14:48) [35]

Soft >> Представь что программа должна работать непрерывно занося каждые 10 а то и 5 сек данные в Базу (таки громоздые FLoatы), а ACCESS вообще удальть не умеет как ты говоришь.. Поэтому я и отказался от него сразу..

ALL
-->> Кстати с этими опытами постоянной записи в винт и удаления я протер на Винте( Barracuda Seagate 60GB) себе Дырку :)) После чего решил поменять его на новый.. Поэтому с этой прогой наверняка надо еще и менять аппартку к примеру на SCSI


 
Sheriff   (2003-03-12 14:57) [36]

о! уже 5 сек...
а нужно ли постоянно записывать данные в БД, если с ними никто не работает?
или за 5 сек пользователь успеет сделать выборку и принять решение?


 
Sheriff   (2003-03-12 14:58) [37]

кстати, вовсе не обязательно вставлять новую запись и удалять ненужную... достаточно вставлять новые данные на место ненужных.


 
Style   (2003-03-12 15:06) [38]

Sheriff-> Можно и 1 сек.. Можно и меньше секунды.. Я так сделал.. Только Программа Сначала дает считать данные а потом их продолжает записывать в отдельной нити..
Это время измерения для прибора - настройка пользователя.


 
Style   (2003-03-12 15:10) [39]

>>>кстати, вовсе не обязательно вставлять новую запись и удалять ненужную... достаточно вставлять новые данные на место ненужных.

Я думал об этом но так можно конкретно повесить базу. т.е надо постоянно следить за тем ID который надо затирать. (некоторое неудобство), так вот Есть же возможность удалять их Парадокса поэтому я подумал почему бы и нет!


 
Style   (2003-03-12 15:11) [40]

Так все же. Парадокс или Что???



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

Форум: "Потрепаться";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.58 MB
Время: 0.012 c
3-6328
dm37
2003-03-13 12:54
2003.04.03
сервис и MS SQL Server


1-6600
Калян
2003-03-20 17:22
2003.04.03
Работа с памятью


14-6773
dimdimka
2003-03-17 16:05
2003.04.03
Нужен словарь русских слов


14-6716
alx99
2003-03-16 01:37
2003.04.03
ищу инфу про сокеты


1-6487
Dimonich
2003-03-14 15:58
2003.04.03
Как заблокировать рабочий стол?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский