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

Вниз

"Случайная" переменная?   Найти похожие ветки 

 
markers ©   (2006-10-19 10:26) [0]

Можно-ли реализовать и как %subj ? Заренее Спасибо!


 
DrPass ©   (2006-10-19 10:27) [1]

Это как? Закрыть глаза и ударить кулаком по клавиатуре?


 
Elen ©   (2006-10-19 10:28) [2]


> markers

В смысле случайное значение (Random)?


 
markers ©   (2006-10-19 10:30) [3]

to DrPass
Извиняюсь, что не уточнил! Мне нужно в run-time завести случайную переменную! В некоторых других языках это возможно!
Точней я скажу так, как создать и заюзать переменную хранящуюся в другой переменной?


 
Ketmar ©   (2006-10-19 10:31) [4]

>[3] markers(c) 19-Oct-2006, 10:30
>Точней я скажу так, как создать и заюзать переменную
>хранящуюся в другой переменной?
обалдеть уточнил. стало ещё непонятней.


 
Elen ©   (2006-10-19 10:38) [5]


> markers

Круто! Юзай тип Variant


 
markers ©   (2006-10-19 10:39) [6]

...
function catfill(parentid:string="0"; pnod : TTreeNode = nil):Boolean;
 var nod: TTreeNode;
     Rsname, Rsid: String; // Надо чтоб имена переменных были разными при вызове этой функции
 begin
  ResRow:=DB.exec("SELECT * FROM mag_categories WHERE parentid = "+onequote+
    parentid+onequote+" AND cattype <> "+onequote+"Deleted"+onequote+" ORDER " +
    "BY `name` ASC");
  Rsname:=VarToStr(ResRow[4]); // А здесь в переменную со случайным именем
  Rsid:=VarToStr(ResRow[0]); // нужно занести значение
  while not ResRow.eof do
   begin
    nod := Tree.Items.AddChild(pnod,Rsname); // И поюзать их
    nod.Data := Pointer(StrToInt(Rsid)); // И здесь
    catfill(Rsid,nod); // И тут
    ResRow.next;
   end;
  // А тут переменную со случайным именем можно освободить (если необходимо)
 end;


Просто у меня проблема, у меня при этой рекурсии перезаписываются переменные :( Я подумал ожет таким способом можно сделать?


 
markers ©   (2006-10-19 10:42) [7]

Просто в PHP такой код (Только написанный на PHP естественно) работает прекрасно без случайных переменных....


 
Elen ©   (2006-10-19 10:45) [8]


>  В некоторых других языках это возможно!

Это в каких?


 
Elen ©   (2006-10-19 10:47) [9]


> у меня при этой рекурсии перезаписываются переменные

Юзай глобальный массив


 
Джо ©   (2006-10-19 10:50) [10]

Вредное влияние PHP на рассудок начинающих программистов все еще до конца не оценено :o)


 
markers ©   (2006-10-19 10:55) [11]

Elen ©   (19.10.06 10:47) [9]
Можно поподробней? Плиз!


 
markers ©   (2006-10-19 10:58) [12]

Джо ©   (19.10.06 10:50) [10]
Я на самом деле давно уже в Дельфях пишу, но просто по работе оно надо редко, а дома лень что-то писать, по этому получается я в Дельфях набегами работаю. Естественно что-то забывается и т.д. (Тем более что я более полугода в PHP програмил после дельфей :) :( )


 
Плохиш ©   (2006-10-19 10:59) [13]


> markers ©   (19.10.06 10:39) [6]
> ...
> function catfill(parentid:string="0"; pnod : TTreeNode =
> nil):Boolean;
>  var nod: TTreeNode;
>      Rsname, Rsid: String; // Надо чтоб имена переменных
> были разными при вызове этой функции

При каждом вызове, они и будут разными переменными.


 
Elen ©   (2006-10-19 11:01) [14]


> Просто у меня проблема, у меня при этой рекурсии перезаписываются
> переменные

Ну и что? Зачем тебе старые данные если ты перед вызовом рекурсии их обрабатываеш.


 
markers ©   (2006-10-19 11:10) [15]

Elen ©   (19.10.06 11:01) [14]
просто у меня в БД лежат данные и мне нужно построить дерево вида
-кат1
--подкат1
--подкат2
---подподкат1
----...
--подкат3
--..
-кат1
-...

Берём первый корневой кат, проверяем нет ли у него детей (Вызовом самого себя)...... возвращаемся на первый вызов, Берём второй корневой кат ...... и т.д.


 
Ketmar ©   (2006-10-19 11:10) [16]

>[6] markers(c) 19-Oct-2006, 10:39
>Просто у меня проблема, у меня при этой рекурсии
>перезаписываются переменные
да? точно? прям-таки "перезаписывабтся"? гражданин соврамши. ошибка у тебя совсем в другом месте. а конкретно -- какого ангела ты ожидаешь, что внешняя переменная ResRow сохранит свое значение после возврата из рекурсивного вызова? ты её где-то сохраняшь?


 
Плохиш ©   (2006-10-19 11:16) [17]


> Ketmar ©   (19.10.06 11:10) [16]

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


 
Elen ©   (2006-10-19 11:19) [18]


> markers

Помоему код в [6] вообще не годиться для такого. Зачем тебе постоянно делать Select?


 
Ketmar ©   (2006-10-19 11:19) [19]

>[17] Плохиш(c) 19-Oct-2006, 11:16
>Спокойно, он же ничего не читал и читать не собирается.
ну зачем так сразу? а вдруг просто не спал неделю? %-)


 
markers ©   (2006-10-19 11:21) [20]

Ketmar ©   (19.10.06 11:10) [16]
Блин! спасибо тебе!!!! Всё работает !!!!!!!
Всем спасибо!!!!!


 
markers ©   (2006-10-19 11:23) [21]

Просто говорю, уже давно не програмил позабыл всё на.... :( ПО этому я сразу и пошёл писать в раздел "начинающим"...... эх.....


 
Ketmar ©   (2006-10-19 11:32) [22]

>[21] markers(c) 19-Oct-2006, 11:23
>ПО этому я сразу и пошёл писать в раздел "начинающим"......
вот именно. умно. пошёл бы в другое -- получил бы по самое немогу. %-))


 
Ketmar ©   (2006-10-19 11:32) [23]

а пинок мой был, кстати, за то, что ты выдвигаешь совершенно кривые прдположения столь безапелляционным тоном. %-)


 
markers ©   (2006-10-19 12:10) [24]

Ketmar ©   (19.10.06 11:32) [25]
Ketmar ©

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


 
Сергей М. ©   (2006-10-19 12:19) [25]


> Elen ©   (19.10.06 11:19) [18]
> Зачем тебе постоянно делать Select?


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


 
Palladin ©   (2006-10-19 12:23) [26]


> Правильные результаты визуализации м.б. получены только
> так.

да ну конечно только так...


 
Сергей М. ©   (2006-10-19 12:27) [27]


> Palladin ©   (19.10.06 12:23) [26]


К чему сарказм ?)

Если возражаешь - приведи контраргументы)...


 
Ketmar ©   (2006-10-19 12:41) [28]

>[27] Сергей М.(c) 19-Oct-2006, 12:27
>Если возражаешь - приведи контраргументы)...
есть ещё куча всяких способов. с ходу: получить всё скопом один раз и потом уже разгребать.


 
Elen ©   (2006-10-19 12:43) [29]


> Правильные результаты визуализации м.б. получены только
> так.

Не спорю, А скорость выполнения такого не упадет?


 
Сергей М. ©   (2006-10-19 12:45) [30]


> Ketmar ©   (19.10.06 12:41) [28]


Это частный случай.
Такая логика запросто даст сбой при определенных условиях.
Но это уже тема для обсуждения в "Базы".


 
Сергей М. ©   (2006-10-19 12:46) [31]


> Elen ©   (19.10.06 12:43) [29]


О скорости речи не идет, да и особый это разговор.


 
Palladin ©   (2006-10-19 13:02) [32]


> Такая логика запросто даст сбой при определенных условиях.

например?


 
Сергей М. ©   (2006-10-19 13:12) [33]


> Palladin ©   (19.10.06 13:02) [32]


> например?


Например, приведи текст того самого единственного "универсального" запроса, который , по-твоему мнению, заменит ту самую кучу запросов, в неоходимости которой ты засомневался в [26].

И я тебе распишу в подробностях конкретную ситуацию, при которой твой "универсальный" запрос окажется у кота под хвостом)


 
Palladin ©   (2006-10-19 13:16) [34]

хм...

select id,id_parent from tree


 
Сергей М. ©   (2006-10-19 13:22) [35]


> Palladin ©   (19.10.06 13:16) [34]


Так.

Приведи фрагмент НД, сформированный твоим запросом ... И обоснуй, что записи в этом НД должны следовать именно так и не иначе ...


 
Palladin ©   (2006-10-19 13:26) [36]


0 Null
1 Null
2 0
3 0
4 2
5 2



> И обоснуй, что записи в этом НД должны следовать именно так и не иначе ...


зачем? мне по барабану в каком порядке мне вернулся НД...


 
Сергей М. ©   (2006-10-19 13:48) [37]


> Palladin ©   (19.10.06 13:26) [36]
>
>
> 0 Null
> 1 Null
> 2 0
> 3 0
> 4 2
> 5 2
>


Теперь представь себе, что выглядит он иначе:

2 0
3 0
0 Null
1 Null

И ?


> мне по барабану в каком порядке мне вернулся НД


Я так и понял, что тебе по барабану)

А вот автору, к примеру, не по барабану. Он получил unidirectional-НД (содержимое см. выше) и движется по нему в порядке следования записей (а как быть иначе, если он однонаправленный ?).

Ну и о каком визуальном построении может идти речь, если первая же запись ссылается на родителя, который фигурирует лишь в 3-й записи в порядке следования записей в данном НД ?

думай)...


 
Palladin ©   (2006-10-19 14:13) [38]


> Теперь представь себе, что выглядит он иначе:
>
> 2 0
> 3 0
> 0 Null
> 1 Null
>
> И ?


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


 
Сергей М. ©   (2006-10-19 14:34) [39]


> Palladin ©   (19.10.06 14:13) [38]


Ради истины потерплю.


 
Palladin ©   (2006-10-19 17:15) [40]

момент истины


procedure TForm1.Button1Click(Sender: TObject);
Type
PItem=^TItem;
TItem=Record
 nID:Integer;
 strCaption:String;
End;

Var
theUnlinked,
theTree:TWRIntegerMap;
q:TADOQuery;

n,nID,nIDParent:Integer;
strCaption:String;

Function _CreateNode(p_theParent:TTreeNode;p_nID:Integer;Const p_strCaption:String):TTreeNode;
Var
 i,n:Integer;
Begin
 Result:=TreeView.Items.AddChild(p_theParent,p_strCaption);
 Result.Data:=Pointer(p_nID);
 If theUnlinked.Find(p_nID,n) Then
  Begin
   For i:=0 to TList(theUnlinked.ObjectData[n]).Count-1 Do
    Begin
     With PItem(TList(theUnlinked.ObjectData[n])[i])^ Do
      theTree.Add_Integer(nID,Integer(_CreateNode(Result,nID,strCaption)));
     Dispose(PItem(TList(theUnlinked.ObjectData[n])[i]));
    End;
   theUnlinked.Delete(n);
  End;
End;

Procedure _AddToUnlinked(p_nID,p_nIDParent:Integer;Const p_strCaption:String);
Var
 n:Integer;
 p:PItem;
Begin
 
 New(p);
 p.nID:=p_nID;
 p.strCaption:=p_strCaption;
 If Not theUnlinked.Find(p_nIDParent,n) Then n:=theUnlinked.Add_Object(p_nIDParent,TList.Create);
 TList(theUnlinked.ObjectData[n]).Add(p);
End;

begin
theTree:=TWRIntegerMap.Create;
theUnlinked:=TWRIntegerMap.Create;

q:=TADOQuery.Create(Nil);
q.Connection:=ADOConnection1;
vtQuickADOQuery(q);
q.sql.text:="select id, id_parent, caption from tree order by caption";
q.Open;
While not q.Eof Do
 Begin
  nID:=q.Fields[0].AsInteger;
  strCaption:=q.Fields[2].AsString;

  If q.Fields[1].IsNull Then theTree.Add_Integer(nID,Integer(_CreateNode(Nil,nID,strCaption))) Else
   Begin
    nIDParent:=q.Fields[1].AsInteger;
    If theTree.Find(nIDParent,n)
     Then theTree.Add_Integer(nID,Integer(_CreateNode(TTreeNode(theTree.IntegerData[n]),nI D,strCaption)))
     Else _AddToUnlinked(nID,nIDParent,strCaption);
   End;
  q.Next;
 End;
q.Close;
q.Free;
theTree.Free;
theUnlinked.Free;
end;


на все вопросы отвечу...


 
Palladin ©   (2006-10-19 17:17) [41]

это для не рекурсивного дерева, для рекурсивного немного сложней...


 
Palladin ©   (2006-10-19 17:22) [42]

краткий глоссарий

TWRIntegerMap - коллекция: ключ - данные (разных типов), с бинарным поиском

vtQuickADOQuery - всего лишь процедура выставляющая параметры исполнения TADOQuery на максимальную производительность


p.s. предполагая подобное "а если чтобы пункты нужны в определенном порядке?" сразу скажу - придирки, бо ничего сложного нет в: докрутить к вышенаписанному добавление элементов в дерево в определенном порядке...


 
Сергей М. ©   (2006-10-19 17:24) [43]


> q.sql.text:="select id, id_parent, caption from tree order  by caption"


Чтой-то вдруг именно по caption ? Зачем вообще здесь явно указанная сортировка ? Почему она не по ParentId, если уж на то пошло ?


> If q.Fields[1].IsNull Then


А если это условие ложно ? Где у тебя его обработка ?


 
Сергей М. ©   (2006-10-19 17:30) [44]


> "а если чтобы пункты нужны в определенном порядке?" сразу
> скажу - придирки


Нет, не придирки.

Это тот самый общий случай, при котором не делается никаких предположений о логическом порядке следования записей о существующих узлах в НД.

Твой код (как и авторский) отражает лишь частный случай - запись о дочернем узле (в порядке следования записей в результирующем НД) всегда ожидается позже, нежели запись о родительском узле.

В общем же случае запись о родителе не обязана фигурировать в НД раньше записи о его "чаде"


 
Palladin ©   (2006-10-19 17:30) [45]


> Чтой-то вдруг именно по caption ?

а просто так, что бы НД вернулся как в твоем примере, caption у меня там a b c d соответственно для каждой строчки, если глаза режет можешь order by убрать...


> А если это условие ложно ? Где у тебя его обработка ?

там Else в конце строки м/у прочим...


 
Palladin ©   (2006-10-19 17:31) [46]


> В общем же случае запись о родителе не обязана фигурировать в НД раньше записи о его "чаде"


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


 
Palladin ©   (2006-10-19 17:34) [47]


> Нет, не придирки.


как это не придирки? обыкновенные придирки. что мешает прикрутить сортировку всех детей одного родителя по определенному критерию?


 
Сергей М. ©   (2006-10-19 17:35) [48]


> там Else в конце строки м/у прочим


ну и влупишь ты при этом узел в корень, ибо родитель в TreeView не найден, потому что еще не добавлен, потому что он в НД фигурирует позже добавляемого в дан.момент чада.

В чем прелесть-то - исказить реальную иерархию ?


 
Palladin ©   (2006-10-19 17:36) [49]


> Сергей М. ©   (19.10.06 17:35) [48]


ай ай ай... ну в какой же корень то? не в корень, а в theUnlinked, то бишь временное хранилище беспризорников...


 
Palladin ©   (2006-10-19 17:38) [50]


В чем прелесть-то - исказить реальную иерархию ?


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


 
Palladin ©   (2006-10-19 17:42) [51]

вот серьезный косяк у себя нашел... строчка

theUnlinked.Delete(n);

ее нужно убрать, не нужна она.


 
Сергей М. ©   (2006-10-19 17:43) [52]


> Palladin ©   (19.10.06 17:34) [47]


вот смотри:

Было:

id, parent:

0 - Null
1 - 0

Запрос

select * from Treetable

вернет НД, по которому твой алгоритм построит совершенно корректное дерево, отражающее действительность.

Теперь я удалил запись с Id = 0 (почему я не вправе это сделать ? про нарушение целостности не будем - я админ и вправе отключить на время проверку) и вновь ее создал (в оригинальном виде).
В результате тот же запрос вернет:

id, parent:

1 - 0
0 - Null

И этот НД твой алгоритм изобразит в виде 2-ух корневых узлов , вместо того чтобы узел с Id=1 изобразить дочерним по отношению к узлу с Id = 0

Где я не прав ? Покажи ...


 
Palladin ©   (2006-10-19 17:47) [53]

нет не в виде двух узлов,
ладно: сейчас полностью откомментирую и запостю...


 
Сергей М. ©   (2006-10-19 17:53) [54]


> В результате тот же запрос вернет


Здесь - в предположении что индекс по перв.ключу при этом по каким-то причинам не использован, т.е. записи в рез. НД будут фигурировать в порядке их "физического" следования.

А если даже индекс по перв.ключу по умолчанию задействован, то ничто не мешает мне модифицировать исх.таблицу таким образом:

id, parent:

1 - 2
2 - Null

что тоже приведет к "краху" подобного алгоритма.


 
Наиль ©   (2006-10-19 17:59) [55]

Уверен, что в данном споре выиграет Palladin.
Нет ничего не возможного в том, чтобы загрузить нижний элемент, раньше верхнего.
Но спор пока вертиться вокруг дерьев.
Совсем другое дело, если база выдаст кольцо. Т.е. каждый элемент ссылается на следующий, а последний на первый.


 
Palladin ©   (2006-10-19 18:00) [56]

все комментировать не стал, только ключевые моменты

procedure TForm1.Button1Click(Sender: TObject);
Type
PItem=^TItem;
TItem=Record // описание записи для "безпризорника", дабы в TList ее хранить
nID:Integer;
strCaption:String;
End;

Var
theUnlinked, // безпризорники в виде
{
ID будущего родителя
 данные безпризорника 1
 данные безпризорника 2
как в твоем примере здесь будет содержатся
: +0
:   | 1

или как в примере выше из четырех записей
: +0
:   | 2
:   | 3
}

theTree:TWRIntegerMap; // основные данные (ключ - значение): ID записи - созданный и уже существующий TTreeNode

q:TADOQuery;

n,nID,nIDParent:Integer;
strCaption:String;

// рекурсивная функция создания TTreeNode в TTreeView"е :)
Function _CreateNode(p_theParent:TTreeNode;p_nID:Integer;Const p_strCaption:String):TTreeNode;
Var
i,n:Integer;
Begin
// создали узел
Result:=TreeView.Items.AddChild(p_theParent,p_strCaption);
Result.Data:=Pointer(p_nID);
// ищем по своему ID в списке безпризорников
If theUnlinked.Find(p_nID,n) Then
 Begin
  // нашли нашего(наших) потерявшегося (шихся)
  For i:=0 to TList(theUnlinked.ObjectData[n]).Count-1 Do
   Begin
    // добавляем каждого к себе в семью    
    With PItem(TList(theUnlinked.ObjectData[n])[i])^ Do
     theTree.Add_Integer(nID,Integer(_CreateNode(Result,nID,strCaption)));
    // удаляя запись о нем в детдоме
    Dispose(PItem(TList(theUnlinked.ObjectData[n])[i]));
   End;
 End;
End;

// процедура регистрации безпризорника в детдоме
Procedure _AddToUnlinked(p_nID,p_nIDParent:Integer;Const p_strCaption:String);
Var
n:Integer;
p:PItem;
Begin
// создаем для него в регистратуре запись
New(p);
p.nID:=p_nID;
p.strCaption:=p_strCaption;
// ищем а были ли в роддоме его сородичи по родителям
If Not theUnlinked.Find(p_nIDParent,n) Then n:=theUnlinked.Add_Object(p_nIDParent,TList.Create); // не было, ничего страшного создаем новый список братьев и сестер
TList(theUnlinked.ObjectData[n]).Add(p); // добавляем его туда
End;

begin
theTree:=TWRIntegerMap.Create;
theUnlinked:=TWRIntegerMap.Create;

q:=TADOQuery.Create(Nil);
q.Connection:=ADOConnection1;
vtQuickADOQuery(q);
q.sql.text:="select id, id_parent, caption from tree order by caption";
q.Open;
While not q.Eof Do
Begin
 nID:=q.Fields[0].AsInteger;
 strCaption:=q.Fields[2].AsString;

 If q.Fields[1].IsNull
  Then theTree.Add_Integer(nID,Integer(_CreateNode(Nil,nID,strCaption))) // еси вдруг товарисч ничей не ребенок, пихаем его в корень
  Else // иначе :)
  Begin
   nIDParent:=q.Fields[1].AsInteger;
   // пытаемся в уже существующих семьях найти родителя
   If theTree.Find(nIDParent,n)
    Then theTree.Add_Integer(nID,Integer(_CreateNode(TTreeNode(theTree.IntegerData[n]),nI  D,strCaption))) // нашли, отослали дитятко под его крыло
    Else _AddToUnlinked(nID,nIDParent,strCaption); // а иначе - определили в детдом
  End;
 q.Next;
End;
q.Close;
q.Free;
theTree.Free;
theUnlinked.Free;
end;


надеюсь так понятней...


 
Palladin ©   (2006-10-19 18:01) [57]

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


 
Сергей М. ©   (2006-10-19 18:01) [58]


> Нет ничего не возможного в том, чтобы загрузить нижний элемент,
>  раньше верхнего


При ограниченных возможностях навигации по НД (тот самый частный случай) шансы получить запись n+i (i > 0) раньше записи n оставляют желать лучшего)


 
Сергей М. ©   (2006-10-19 18:03) [59]


> база выдаст кольцо. Т.е. каждый элемент ссылается на следующий,
>  а последний на первый


Опять же - частный случай)

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


 
Palladin ©   (2006-10-19 18:22) [60]


> Сергей М. ©


ты все еще продолжаешь неверить своим глазам? хорошо

http://tiravi.narod.ru/send1.zip

компилируй, исполняй, выставляй НД как твоей душе угодно...


 
Palladin ©   (2006-10-19 18:23) [61]

правда под D6, если ее у тебя нет, то пришлю урезанные исходники dcu файлов


 
Palladin ©   (2006-10-19 18:39) [62]


> Наиль ©   (19.10.06 17:59) [55]

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


 
markers ©   (2006-10-20 01:11) [63]

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


 
Сергей М. ©   (2006-10-20 08:11) [64]


> Palladin


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



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

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

Наверх




Память: 0.64 MB
Время: 0.064 c
15-1161000666
clickmaker
2006-10-16 16:11
2006.11.05
Вакансии Delphi


15-1161150847
En -> Ru -> En
2006-10-18 09:54
2006.11.05
Что означают эти символы


15-1160935733
Palladin
2006-10-15 22:08
2006.11.05
Are you dead yet!?


2-1161530626
ПчелкаМайя
2006-10-22 19:23
2006.11.05
Статус окна.


15-1161079948
Empleado
2006-10-17 14:12
2006.11.05
Интересно, через какое время оно придет в каждый дом?





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