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

Вниз

InterBase   Найти похожие ветки 

 
Ru   (2003-10-09 17:53) [0]

1. Как узнать количество записей в таблице базы (RecordCount стабильно выдает 1)


 
Anatoly Podgoretsky   (2003-10-09 17:57) [1]

Нет не стабильно, сделай Lasr и посмотри снова.


 
Брат   (2003-10-09 17:59) [2]

Сначала делашь так:
IBTable.FetchAll или IBQuery.FetchAll
а затем считываешь RecordCount


 
Ru   (2003-10-09 18:02) [3]

>Anatoly Podgoretsky © (09.10.03 17:57) [1]

А что такое "Lasr"?

>Брат © (09.10.03 17:59) [2]

попробую


 
sniknik   (2003-10-09 18:06) [4]

> А что такое "Lasr"?
это Last набранное слепым методом и кривыми пальцами. :о))


 
kaif   (2003-10-09 18:27) [5]

Вообще-то в IB для этого запросы существуют.
Типа SELECT COUNT(*)...
Побыстрее фетча работают.


 
Johnny Smith   (2003-10-09 18:32) [6]

2kaif © (09.10.03 18:27) [5]
Вообще-то в IB для этого запросы существуют.
Типа SELECT COUNT(*)...
Побыстрее фетча работают.

Когда надо всего-навсего RecordCount узнать?
:)))))))


 
sniknik   (2003-10-09 18:55) [7]

Johnny Smith © (09.10.03 18:32) [6]
> Когда надо всего-навсего RecordCount узнать?
> :)))))))
именно тогда, запрос с ... COUNT(*) ... гораздо быстрее чем фетч до конца даже небольшой таблички, т.к. перекачивается всего 1 запись.
а качать все возможно и не нужно.

ну к примеру, делает юзер запрос а вы ему ограничение ставите если количество записей > 100 тысячь, то пресекать попытку, типа "милый, столько данных и за месяц не обработать. зачем тебе стока в конце рабочего дня?".
забота о юзере однако, заодно и трафик поэкономить. а вот если "всего-навсего RecordCount узнать" и зафетчить ради этого все, то есть вероятность что рабочий день юзера кончится так и не начавшись, потому как юзер он не один, их много и все они с утра начнут бомбардировать сервер неподьемными запросами.


 
dzh2000   (2003-10-09 21:10) [8]

sniknik абсолютно прав.
Правильнее добавить Query и сделать запрос типа select count(*).
Это и удобно и менее загружает систему, чем Last и FetchAll.


 
Ru   (2003-10-10 10:02) [9]

Такой уж совсем глупый вопрос:
Так это что для нормлаьной работы с InterBase мне все на SQL запросах делать?


 
Sergey_Masloff   (2003-10-10 10:12) [10]

Ru © (10.10.03 10:02) [9]
>Так это что для нормлаьной работы с InterBase мне все на SQL >запросах делать?
ес-сно.


 
Anatoly Podgoretsky   (2003-10-10 10:14) [11]

sniknik © (09.10.03 18:55) [7]
Только вот результаты могут быть разные, например запрос с ограничением записей. Но как правило все таки надо использовать count(*), но вопрос был не про это, а про то что мол RecordCount не работает. Во вторых неизвестно, что за запрос, возможно время его формирования значительно превосходит время перекачки результата по сети. Скажем некоторый длительный расчет, в результате которого будет выдано всего несколько записей.

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


 
Sergey13   (2003-10-10 10:16) [12]

2Ru © (10.10.03 10:02) [9]
>Так это что для нормлаьной работы с InterBase мне все на SQL запросах делать?
Для нормальной так проще.


 
Ru   (2003-10-10 10:20) [13]

В Paradox была такая удобная вещь как:
Table1.Next; а для InterBase (используя IBX) что нельзя сделать IBDataSet1.Next?


 
Mike Kouzmine   (2003-10-10 11:15) [14]

Можно. Но это другая песня.


 
sniknik   (2003-10-10 11:21) [15]

Anatoly Podgoretsky © (10.10.03 10:14) [11]
ну я то не отвечал на вопрос, а на поправку от Johnny Smith © [6], в общем случае. конечно нужно смотреть по конкретному случаю.

а кстати пример неправильной работы с SQL (все на таблицах, не используя возможности sql), у всех перед глазами, имею в виду 1С, все видели. переделывая их отчеты средствами SQL люди добиваются ускорения в сотни раз!!! (сделай так чтобы на твоей программе этого резерва не было :о))

Ru © (10.10.03 10:20) [13]
> В Paradox была такая удобная вещь как:
> Table1.Next; а для InterBase (используя IBX) что нельзя сделать IBDataSet1.Next?
почему нельзя, можно. только желательно знать что происходит, если в парадокс (локальный вариант) просто перемещался указатель таблице (типа Point + размер записи = указатель уже на следующей записи) очень быстро, то в случае с sql сервером два варианта, при уже полученном на локаль датасетом будет то же самое только в памяти а вот в случае с серверным курсором запись будет докачиватся с сервера если конечно она еще не закачена и вот тут возможны тормоза (последовательный перебор в серверном курсоре гораздо дольше чем закачка + перебор в локальном курсоре, тестил на ADO - MSSQL (думаю когда передается сразу весь рекордсет то он пакуется)).
в общем когда с работаеш локальным курсором то тормозит на открытии (данные качаются на клиента), с серверным тормозит на докачке а открывает быстро. узнать что тебе выгоднее, часто только эксперименты могут помоч.
(с каким курсором работает IBX и можно ли менять не знаю, не работал)


 
Жук   (2003-10-10 11:24) [16]


> sniknik © (09.10.03 18:55) [7]
> ну к примеру, делает юзер запрос а вы ему ограничение ставите
> если количество записей > 100 тысячь, то пресекать попытку,
> типа "милый, столько данных и за месяц не обработать. зачем
> тебе стока в конце рабочего дня?".

Предсталяю, что мне скажет главбух, когда после составления круто-навороченной выборки с кучей условий и пятиминутного ожидания выполнения запроса, прога ему мессагнет :"Милый,... и т.п." :-)


 
Danilka   (2003-10-10 11:33) [17]

[16] Жук © (10.10.03 11:24)
Скажет, "Какой-такой милый, я-же девушка, гомосек ты несчастный!"


 
Anatoly Podgoretsky   (2003-10-10 11:35) [18]

Жук © (10.10.03 11:24) [16]
И вот теперь представь, получение Count по такой выборке


 
Sergey13   (2003-10-10 11:38) [19]

2Жук © (10.10.03 11:24) [16]
>Предсталяю, что мне скажет главбух, когда после составления
Может его успокоит тот факт, что он получит сообщение ДО составления. Тогда он поймет что до конца рабочего дня он не успеет все это дело распечатать. 8-)


 
Ru   (2003-10-10 11:41) [20]

>sniknik © (10.10.03 11:21) [15]

пока у меня локальная база.
делаю так:
IBDataBase - для подключения к базе
IBTransaction - говорят надо
IBDataSet - для подключения к конкретной таблице базы
Делаю IBDataSet1.Next; - в результате ничего не происходит.
Я не использую стандартные компоненты для работы с базами (DBAware).


 
Жук   (2003-10-10 11:45) [21]


> Anatoly Podgoretsky © (10.10.03 11:35) [18]
> И вот теперь представь, получение Count по такой выборке

Про это и говорю. Получаем вместо одного запроса - два !
Нет кж. Уж лучше отфетчить и всё...


 
sniknik   (2003-10-10 11:57) [22]

Жук © (10.10.03 11:45) [21]
см. конкретный случай, в Anatoly Podgoretsky © [11] описано.

в абсолютном большинстве выборок передача данных гораздо дольше расчета, это если очень сложный запрос а выборке насколько значений то да.
в первом случае 2 запроса лутше во втором 1 с фетчем. а делать предпочтение только одному способу всегда это ...

Ru © (10.10.03 11:41) [20]
> Делаю IBDataSet1.Next; - в результате ничего не происходит.

посмотри может это виртуальный метод.
(и не спрашивай меня по IB, я с ним почти не работал, а с IBX вооще (только 1 раз. стах по IBX 1день :о)) ну чего я могу сказать?)


 
Alexandr   (2003-10-10 12:26) [23]

2Ru
слушай, ты такой крутой специалист по базам данных!
скажи мне только:
1) что такое Dbaware
2) как ты подключаешься к базе данных с помощью IBDatabase
3) как ты выбираешь таблицу, к которой надо подлючится в IBDataset? я не нашел там такого свойства
4) IBDataSet1.Next загружает следующую таблицу из базы данных, да?
если у тебя нет времени, чтоб написать ответы здесь, может подумаешь, сколько бы ты взял денег за пару консультаций по базам данных? У меня нет много денег, но думаю на несколько сотен у.е. сможем договориться.


 
Анонимщик   (2003-10-10 12:34) [24]

На пустом месте дискуссия.
А вообще-то для интербейза, из-за версионности, и count(*) плохо, но лучше, конечно, навигации.


 
Danilka   (2003-10-10 12:36) [25]

[24] Анонимщик © (10.10.03 12:34)
а по чему тогда в орокле с count(*) все хорошо? я имею ввиду то, что он тоже версионник.


 
Alexandr   (2003-10-10 12:41) [26]

оракл не версионник.
Он эмулирует версионник, что хорошо видно по ограничениям


 
Анонимщик   (2003-10-10 12:42) [27]

Danilka
Съел?


 
NickBat   (2003-10-10 12:45) [28]

Из-за чего весь сыр-бор то?

Практически всегда для серверной БД count будет быстрее FetchAll


 
Alexandr   (2003-10-10 12:47) [29]

а если после count все равно надо fetchAll делать, то есть ли смысл в count?


 
Danilka   (2003-10-10 12:50) [30]

[26] Alexandr © (10.10.03 12:41)
Серьезно? Надо будет уточнить, всегда считал его версионником, да и на sql.ru про него говорили что он версионник.
А какие у него ограничения? Что-то я не заметил там никаких ограничений наоборот.


 
Ru   (2003-10-10 12:51) [31]

>Alexandr © (10.10.03 12:26) [23]
>слушай, ты такой крутой специалист по базам данных!

я пытаюсь научиться

>1) что такое Dbaware

если не ошибся в написании (кажется я этого не делал), то это всего-навсего набор компонентов ориентированных на работу с базами данных. Точнее на отображение информации хранящейся в базе (пример: DBGrid)

>2) как ты подключаешься к базе данных с помощью IBDatabase

щелкаем правой клавишей мыши на IBDatabase, выбираем пункт меню "Database Editor ..." в появившемся окне указываем путь к базе, имя пользователя, пароль доступа, кодировку базы.
Подключение происходит при установке свойства IBDatabase в положение true

>3) как ты выбираешь таблицу, к которой надо подлючится в IBDataset? я не нашел там такого свойства

в IBDataset в свойстве "DataBase" указываешь базу (IBDatabase).
Заполняешь "SelectSQL" (Select * from MyTBL)
Затем правым щелчком мыши вызываешь меню, в котором выбираешь пункт "Dataset Editor ..." - нажимаешь кномпу "Generate SQL" - для генерации запросов необходимых для работы с таблицей.

>4) IBDataSet1.Next загружает следующую таблицу из базы данных, да?

данная инструкция (теоретически) переводит указатель с текущей на следующую, тобто если мы находимся на первой записи, то после выполнения данной инструкции мы будем находится на второй.


 
Alexandr   (2003-10-10 12:54) [32]

Danilka ©
там версии пишутся в отдельном журнале каком-то который может переполниться.
примерно так.


 
Alexandr   (2003-10-10 12:56) [33]

2Ru © (10.10.03 12:51) [31]
спасибо за подробный ответ.


 
Ru   (2003-10-10 12:57) [34]

>Alexandr © (10.10.03 12:56) [33]

но у меня сложилось впечатление, что вы знаете InterBase лучше меня


 
Анонимщик   (2003-10-10 12:59) [35]

Вообще-то я распоясался, Данилка, извини.
Насчет Оракла вообще ничего не знаю.
Насколько я понял из объяснений разработчиков FireBird"а, а они долго и упорно рассказывали о том, что никогда не будут делать ускорения count(*) (хотя, по моему, неправильному, возможно, мнению, во многих случаях это можно было бы им и сделать), этого самого ускорения не будет.
А автору вопроса могу предложить вариант: сделать триггер на внесение и удаление записей в таблицу, в котором изменять на единицу значение количества записей, и хранить это значение в отдельной таблице.
Предполагаю, также, что с этим возможны особенности, но описать их не берусь. Но в простейших случаях будет работать.


 
Alexandr   (2003-10-10 13:05) [36]

1) вот именно на триггере и можно сделать в особых случаях.
2) count по полной таблице не имеет большого смысла. Ибо главное - count по выборке. А тут уже на триггере не реализовать.
3) mssql например count вычисляет по индексу, ибо блокировочник.
interbase так не может, зато он может многое другое.


 
Johnmen   (2003-10-10 13:13) [37]

>Danilka © (10.10.03 12:50)

Оракл - блокировочник.

>Alexandr © (10.10.03 12:54)

Не совсем версии, а т.н. блоки отката и сегменты отката. Их данные помещаются в журнальный буфер, который можно сбрасывать на диск. Поэтому и появляется возможность "откатить" подтвержденные транзакции...
Вобщем присутствуют лишь некоторые признаки версионника :)


 
sts   (2003-10-10 13:19) [38]

Анонимщик © (10.10.03 12:59) [35]

Этого не делать ни в коем случае (впустую потраченное время).

Alexandr © (10.10.03 12:54) [32]

В сегменте отката они хранятся. С версиями там все хорошо.

ИМХО в IB можно пользоваться Count(*) хотя бы потому, что там сложный запрос не написать (во всяком случае без ХП) и они в основном простые. В Fib+ есть возможность делать это автоматически.

Ru © (09.10.03 17:53)

Кроме корректного отображения ScrollBar и прогресса обработки записей трудно представить для чего это может понадобиться.
ИМХО это дурь лишние запросы кидать на сервер.


 
Анонимщик   (2003-10-10 13:30) [39]

sts
Может, Нимцовича еще процитируешь о потере времени?
Почти уверен, что автор вопроса все равно будет делать долгий count(*)


 
Ru   (2003-10-10 13:35) [40]

>Анонимщик © (10.10.03 13:30) [39]

автор вопроса благоволучно сделал:
function TData.GetTabCnt(input: TIBDataSet): integer;
var
cn:integer;
begin
{отримати кількість записів у таблиці}
cn:=input.RecNo;
input.Last;
result:=input.RecNo;
input.First;
input.MoveBy(cn);
end;

И автора вопроса волнует другой вопрос: в чем состоит глюк, что не работает IBDataSet1.Next; ?


 
Анонимщик   (2003-10-10 13:46) [41]

Точно нэ працюе? Наскилькы я розумию, всэрэдини Next выклыкаеться MoveBy(1). Тоди б и MoveBy не працювало. Спробуй трасиювання.


 
Delirium^.Tremens   (2003-10-10 13:46) [42]


> Ru © (10.10.03 13:35) [40]
> >Анонимщик © (10.10.03 13:30) [39]
>
> автор вопроса благоволучно сделал:
> function TData.GetTabCnt(input: TIBDataSet): integer;
> var
> cn:integer;
> begin
> {отримати кількість записів у таблиці}
> cn:=input.RecNo;
> input.Last;
> result:=input.RecNo;
> input.First;
> input.MoveBy(cn);
> end;

Зачем так много текста для какой-то фигни?

> И автора вопроса волнует другой вопрос: в чем состоит глюк,
> что не работает IBDataSet1.Next; ?


WHILE NOT ...EOF DO
BEGIN
...
NEXT;
END;


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

Все работает. Выкини свой код и поставь отдельный кверь для SELECT COUNT(*). Получи из него искомое количество. Уже столько мастеров об этом сказало, а ты все за свое.


 
Danilka   (2003-10-10 13:52) [43]

[35] Анонимщик © (10.10.03 12:59)
:)

Alexandr ©
Johnmen ©
Засомневался, спосил на скл.ру, блокировочник он или версионник, получил вот-такие ответы:

Violina
Почему Оракл не блокировочник

1) Чтнение не блокирует запись. Пример, если изменяются данные, которые нужны долгоиграющему запросу, то изменение не блокируется, восстанавливается старая версия данных на момент начала запроса из сегмента отката.

2) Запись не блокирует чтение. В случае необходимости, восстанавливается старая версия данных на момент начала запроса из сегмента отката.


Пуп
Более того, Том Кайт в своей книге подробно объясняет, каким образом умудряется обеспечивать такой низкий уровень блокировок и такой высокий уровень конкурентности. В Оракл блокировки это атрибут данных, блокировки не управляются всякими там менеджерами или агентами, которые бы вызывали bottle necks при обращении к ним.

Представьте ресторан со 100 столиками, на каждом стоит чайник. Задача - напоить чаем 1000 человек. Есть 4 официанта (менеджера блокировок). Если чай могут разливать только они, то представьте как им придется бегать и как многим придется ждать. Альтернативный вариант (как в Оракл) - каждый посетитель наливает себе чай сам и не ждет.

Пример, проапдейтили очень много строк, было наложены блокировки. Транзакция закомичена, все эти блокировки снимать - только систему нагружать. Последующие процессы при обращении к данным просто снимут их сами (только с нужных им данных), определив что они уже не действительны. Такм образом вместо аврала по очистке блокировок, это равномерно распределяется по времени не оказывая ощутимого влияния на производительность.


 
Danilka   (2003-10-10 13:58) [44]

Вдогонку, посоветовали почитать про вот-эти орокловые фичи:

flashback database - возможность запрашивать базу данных по состоянию на момент времени в прошлом (например час назад).

workspace management - версионирование таблиц в рабочих пространстрвах. Слияние версий и разрешение кофликтов.


 
Johnmen   (2003-10-10 14:05) [45]

>Danilka © (10.10.03 13:52)

И что ?


 
Danilka   (2003-10-10 14:09) [46]

[45] Johnmen © (10.10.03 14:05)
То что он версионник, а не блокировочник.


 
sts   (2003-10-10 14:28) [47]

Danilka © (10.10.03 14:09) [46]

УРА!!!


 
sts   (2003-10-10 14:37) [48]

Ru © (10.10.03 13:35) [40]
>Анонимщик © (10.10.03 13:30) [39]

автор вопроса благоволучно сделал:
function TData.GetTabCnt(input: TIBDataSet): integer;
<skipped>

Автора еще должен волновать вопрос можно ли то же самое сделать проще:

function TData.GetTabCnt(input: TIBDataSet): integer;
begin
input.FetchAll;
result:=input.RecordCount;
end;


 
Ru   (2003-10-10 14:50) [49]

>sts © (10.10.03 14:37) [48]

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

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


 
Johnmen   (2003-10-10 14:50) [50]

>Danilka © (10.10.03 14:09)

Странно:
1. Ты доверяешь высказыванию неизвестных личностей
2. Из их высказываний абсолютно не следует тот вывод, который ты сделал.

Оракл - блокировочник, но не в чистом виде. С элементами версионника. И эти элементы существенны.
используя
Из книги:
"ORACLE автоматически поддерживает одновременный доступ и точность информации в многопользовательском окружении базы данных, - используя блокировки, транзакции и многоверсионную модель согласованности данных."


 
Danilka   (2003-10-10 15:04) [51]

[50] Johnmen © (10.10.03 14:50)
Просто я сам себя считаю слабым ороклистом, работаю с ним чуть больше года как программер и разработчик БД и все это время слышал что он версионник. Поэтому и спросил в форуме, к котором есть опытные ороклисты. Та-же Violina недавно сдала экзамены на ОСР (незнаю что это такое :)) но видимо что-то хорошее - все ее поздравляли).

То что это гибрид версионника и блокировочника, там уже тоже сказали:
Oracle - гибрид версионника и блокировачника.
Чистый версионник в теории Concurency and Recovery,вообще не ставит блокировок, каждая транзакция работает со своей версией данных, конфликты решаются при COMMIT.
Это достаточно "дорогое" решение, значительно дешевле обычно оказывается предотвратить конфликт, чего Oracle добивается блокировками.


Ссылка на ветку:
http://www.sql.ru/forum/actualthread.aspx?bid=3&tid=53089


 
Delirium^.Tremens   (2003-10-10 15:18) [52]


> Danilka © (10.10.03 15:04) [51]
> Oracle - гибрид версионника и блокировачника.


Рассуждения в вашем оффтопике напоминают мне спор двух четвероногих из рекламы:
- Сытное
- Нет, вкусное
:-))))


 
Danilka   (2003-10-10 16:10) [53]

[52] Delirium^.Tremens © (10.10.03 15:18)
А он и сытый и вкусный, вона как! :))


 
Жук   (2003-10-10 16:51) [54]


> Delirium^.Tremens © (10.10.03 13:46) [42]
> Все работает. Выкини свой код и поставь отдельный кверь
> для SELECT COUNT(*). Получи из него искомое количество.
> Уже столько мастеров об этом сказало, а ты все за свое.

Это кто же ему такое говорил ? Наоборот так не надо делать.


 
Anatoly Podgoretsky   (2003-10-10 17:23) [55]

Жук © (10.10.03 11:45) [21]
Жук © (10.10.03 16:51) [54]
И наоборот представб ситуацию, когда запрос выполняет за миллисекунды и потом нудно по сети перекачивается на машину, много записей, в этом случае COUNT оптимальнее.

Никто не говорил абсолютно надо использовать или нет, говорили абсолютно другое - it"s depended
Запрос запросу рознь.


 
kaif   (2003-10-10 19:17) [56]

2 Ru © (09.10.03 17:53)
Если бы ты спросил, как узнать количество записей в наборе, а не в таблице базы, я бы про SELECT COUNT(*) и не заикнулся. Я бы сказал, что ты забыл сделать FetchAll, Прежде чем смотреть свойство RecordCount. Кстати, IBX совершенно корректно дают RecordCount после FetchAll. Это стопудово.
Но ты спросил:
Как узнать количество записей в таблице базы (RecordCount стабильно выдает 1)
И углядел противоречие в самом вопросе.
Так как худший универсальный способ для любой таблицы узнавать количество записей в ней это как раз связываться с RecNo и выборкой всего набора на клиент, когда вместо этого существует SELECT COUNT(*). И никак из вопроса не понять, что нужно еще и данные получать, то есть о необходимости того, чтобы запрос о количестве записей стал бы вторым запросом.
Так что обижаться на длинное обсуждение не надо, формулируй запросы понятнее, сообщая хоть что-то из самой задачи и ответ получишь правильный и сразу.


 
Zacho   (2003-10-10 19:18) [57]

Извеняюсь, но после первых нескольких постов стал читать по диагонали :) Насмешили, блин :) Не, не все, а только некоторые :) Без обид, надеюсь...


 
kaif   (2003-10-10 19:27) [58]

Судя по ответам на вопросы, ты достаточно хорошо представляешь, как использовать IBX компоненты. Но я не знаю, в курсе ли ты, что в SQLЮ, как правило, мало применяются выборки всей таблицы типа
select * from <table>.

Обычно выборки имеют существенно меньшее число строк в наборе, чем таблицы, из которых они производятся. То есть выборки обычно бывают:

select * from <table>
where <условие отбора>

В этом случае правильно говорить о RecordCount не как о количестве строк в таблице, а как о количестве строк в данном наборе.

Поэтому и возникло подобие спора, так как не ясно, что же тебе нужно. Если у тебя таблица со 100тыс записей, а ты ищешь способ сделать Last на клиенте только для того чтобы узнать, сколько записей в таблице, то народ постарается тебя отговорить от этого мероприятия.



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

Форум: "Базы";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.62 MB
Время: 0.013 c
3-98444
Oleg Barsky
2003-10-10 14:02
2003.10.30
Форматирование в DBGrid


1-98731
Jiura23cfdf
2003-10-20 19:49
2003.10.30
Еще раз: как сохранить данные из RichEdit1 в RichEdit2?


14-98816
4445
2003-10-11 15:54
2003.10.30
Тормозное открытие папок..


1-98619
PVOzerski
2003-10-16 17:54
2003.10.30
Теоретический вопрос о ShareMem: нельзя ли обойтись?


14-98784
Skier
2003-10-10 10:22
2003.10.30
Два спортивных вопроса на выходные. :)





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