Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с XML, Нужна помощь 
:(
    Опции темы
Erfolg
Дата 23.9.2006, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 17.8.2006

Репутация: нет
Всего: нет



Подскажите, как реализовать следующую задачу, нужно открыть XML файл и из него вывести в memo нужную информацию
структура файла:
Код

  <?xml version="1.0" ?> 
- <!--  2G BTS XML FILE. INT_ID = 23295 CO_GID = 23295002 
  --> 
- <HWData xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hw_data.xsd">
  <Header time="2006-09-20T21:07:18" uploaded="true" version="1.0" GlobalId="23295002" AccessProtocol="BTSHWA" AdaptationName="BTSUpload" ProprietaryElementAddress="INT_ID=23295" /> 
- <NE objectClass="BCF" objectClassVersion="1" MOID="NE-BSC-711319/DN:NE-BCF-33" NEId="PLMN-PLMN/BSC-711319/BCF-33" operationalState="enabled" NEType="BTS" systemTitle="Ultra" vendorName="NOKIA">
- <availabilityStatus>
  <AvailabilityStatusEntry>Power On</AvailabilityStatusEntry> 
  </availabilityStatus>
- <EQHO MOID="NE-BSC-711319/DN:NE-BCF-33/EQHO-1" objectClass="EQHO" objectClassVersion="1" equipmentHolderId="1" equipmentHolderType="Subrack" equipmentHolderSpecificType="BTSUltraSubrack" locationName="000000-000" version="01">
- <UNIT objectClass="UNIT" objectClassVersion="1" MOID="NE-BSC-711319/DN:NE-BCF-33/PWSB-1" unitTypeActual="PWSB" unitId="1" vendorName="NOKIA" identificationCode="467866A" operationalState="enabled" serialNumber="0S2034546520" version="0105" position="1">
- <availabilityStatus>
  <AvailabilityStatusEntry>Power On</AvailabilityStatusEntry> 
  </availabilityStatus>
  </UNIT>
- <UNIT objectClass="UNIT" objectClassVersion="1" MOID="NE-BSC-711319/DN:NE-BCF-33/PWSB-2" unitTypeActual="PWSB" unitId="2" vendorName="NOKIA" identificationCode="467866A" operationalState="enabled" serialNumber="0S2034546524" version="0105" position="2">
- <availabilityStatus>
  <AvailabilityStatusEntry>Power On</AvailabilityStatusEntry> 
  </availabilityStatus>
  </UNIT>
- <UNIT objectClass="UNIT" objectClassVersion="1" MOID="NE-BSC-711319/DN:NE-BCF-33/PWSB-3" unitTypeActual="PWSB" unitId="3" vendorName="NOKIA" identificationCode="467866A" operationalState="enabled" serialNumber="0S2034546525" version="0105" position="3">
- <availabilityStatus>
  <AvailabilityStatusEntry>Power On</AvailabilityStatusEntry> 
  </availabilityStatus>
  </UNIT>
- <UNIT objectClass="UNIT" objectClassVersion="1" MOID="NE-BSC-711319/DN:NE-BCF-33/DVDC-2" unitTypeActual="DVDC" unitId="2" vendorName="NOKIA" identificationCode="468619A" operationalState="enabled" serialNumber="05D033500547" version="0000102" position="4">
- <availabilityStatus>
  <AvailabilityStatusEntry>Power On</AvailabilityStatusEntry> 
  </availabilityStatus>



Нужно что  бы создавалась 3 колонки с unitTypeActual identificationCode serialNumber
с XML не работал, даже не представляюс с помощью какого компонента это можно сделать
PM MAIL   Вверх
BUGOR
Дата 23.9.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



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


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
DemoCode
Дата 23.9.2006, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 890
Регистрация: 20.10.2005
Где: Россия

Репутация: 2
Всего: 41



Цитата(Erfolg @  23.9.2006,  11:11 Найти цитируемый пост)
с XML не работал, даже не представляюс с помощью какого компонента это можно сделать 

TXMLDocument с закладки Internet. В хэлпе всё хорошо описано и с примерами.


--------------------
Жить стало лучше, жить стало веселей
© И.В. Сталин 
PM MAIL ICQ   Вверх
Erfolg
Дата 23.9.2006, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 17.8.2006

Репутация: нет
Всего: нет



ПРобую но ни чего не получается (((
Единственное получилось загрузить в TDGrid с помощью XML Mappera, но мне такой вариант не подходит т.к. у меня около 5 тысяч XML файлов и мне надо из них построить одну базу
PM MAIL   Вверх
DemoCode
Дата 23.9.2006, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 890
Регистрация: 20.10.2005
Где: Россия

Репутация: 2
Всего: 41



Цитата(Erfolg @  23.9.2006,  13:21 Найти цитируемый пост)
ПРобую но ни чего не получается

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


--------------------
Жить стало лучше, жить стало веселей
© И.В. Сталин 
PM MAIL ICQ   Вверх
Erfolg
Дата 23.9.2006, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 17.8.2006

Репутация: нет
Всего: нет



Цитата

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

Действительно........ просто запарился  ((((
можешь накидать примерчек как с помощью XMLDocument можно вывести в мемо (в моем случае)
все UNIT с атрибутами unitTypeActual и serialNumber
Вот XML Файл
Код

 <?xml version="1.0" ?> 
- <!--  2G BTS XML FILE. INT_ID = 7736 CO_GID = 7736002 
  --> 
- <HWData xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hw_data.xsd">
  <Header time="2006-09-20T21:05:47" uploaded="true" version="1.0" GlobalId="7736002" AccessProtocol="BTSHWA" AdaptationName="BTSUpload" ProprietaryElementAddress="INT_ID=7736" /> 
- <NE objectClass="BCF" objectClassVersion="1" MOID="NE-BSC-704569/DN:NE-BCF-33" NEId="PLMN-PLMN/BSC-704569/BCF-33" operationalState="enabled" NEType="BTS" systemTitle="Ultra" vendorName="NOKIA">
- <availabilityStatus>
  <AvailabilityStatusEntry>Power On</AvailabilityStatusEntry> 
  </availabilityStatus>
- <EQHO MOID="NE-BSC-704569/DN:NE-BCF-33/EQHO-1" objectClass="EQHO" objectClassVersion="1" equipmentHolderId="1" equipmentHolderType="Subrack" equipmentHolderSpecificType="BTSUltraSubrack" locationName="000000-000" version="01">
- <UNIT objectClass="UNIT" objectClassVersion="1" MOID="NE-BSC-704569/DN:NE-BCF-33/PWSB-1" unitTypeActual="PWSB" unitId="1" vendorName="NOKIA" identificationCode="467866A" operationalState="enabled" serialNumber="0S2034546642" version="0105" position="1">
- <availabilityStatus>
  <AvailabilityStatusEntry>Power On</AvailabilityStatusEntry> 
  </availabilityStatus>
  </UNIT>
- <UNIT objectClass="UNIT" objectClassVersion="1" MOID="NE-BSC-704569/DN:NE-BCF-33/PWSB-2" unitTypeActual="PWSB" unitId="2" vendorName="NOKIA" identificationCode="467866A" operationalState="enabled" serialNumber="0H7034510184" version="0000105" position="2">
- <availabilityStatus>
  <AvailabilityStatusEntry>Power On</AvailabilityStatusEntry> 
  </availabilityStatus>
  </UNIT>
- <UNIT objectClass="UNIT" objectClassVersion="1" MOID="NE-BSC-704569/DN:NE-BCF-33/PWSB-3" unitTypeActual="PWSB" unitId="3" vendorName="NOKIA" identificationCode="467866A" operationalState="enabled" serialNumber="0H7034510186" version="0000105" position="3">
- <availabilityStatus>
  <AvailabilityStatusEntry>Power On</AvailabilityStatusEntry> 
  </availabilityStatus>




Это сообщение отредактировал(а) Erfolg - 23.9.2006, 14:01
PM MAIL   Вверх
BUGOR
Дата 23.9.2006, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



Добавь на форму контрол ListView, установи компонент TregExpr(поищи по форуму):

Код

procedure TForm1.FormCreate(Sender: TObject);
var
lpData: TStringList;
exp: TRegExpr;
i: dword;
begin
  lpData := TStringList.Create;
  exp := TRegExpr.Create;

  with ListView1 do begin
    Columns.add.Caption := 'unitTypeActual';
    Columns.add.Caption := 'serialNumber';
    Columns[0].Width := 120;
    Columns[1].Width := 120;
  end;

  lpData.LoadFromFile('C:\1.xml');
  i:=0;
  exp.Expression := 'unitTypeActual="[A-Za-z]{4}';
  if exp.Exec(lpData.Text) then begin
    ListView1.Items.Add.Caption := StringReplace(exp.Match[0], 'unitTypeActual="', '', [rfReplaceAll]);
    while exp.ExecNext do
      ListView1.Items.Add.Caption := StringReplace(exp.Match[0], 'unitTypeActual="', '', [rfReplaceAll]);
  end;
  exp.Expression := 'serialNumber="[A-Z0-9]{12}';
  if exp.Exec(lpData.Text) then begin
    ListView1.Items[0].SubItems.add(StringReplace(exp.Match[0], 'serialNumber="', '', [rfReplaceAll]));
    while exp.ExecNext do begin
      inc(i);
      ListView1.Items[i].SubItems.add(StringReplace(exp.Match[0], 'serialNumber="', '', [rfReplaceAll]));
    end;
  end;
end;


Если unitTypeActual всегда 4 буквы, а serialNumber 12 символов, то работать будет... 
Можно было бы попроще сделать, без всяких StringReplace, но оказалось, что TregExpr не поддерживает опережающих проверок, которые в парсинге XML очень полезны.


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
drkot
Дата 24.9.2006, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



BUGOR, вобще ничего страшного что для разбора xml существует специальный парсер. 
Война как говорится ...., главное маневры.

Цитата(BUGOR @  23.9.2006,  15:05 Найти цитируемый пост)
Если unitTypeActual всегда 4 буквы, а serialNumber 12 символов, то работать будет..

стакими ограничениями .... 
А потом ищи откуда в юзера глюки полезли.

Цитата(BUGOR @  23.9.2006,  15:05 Найти цитируемый пост)
Можно было бы попроще сделать, без всяких StringReplace, но оказалось, что TregExpr не поддерживает опережающих проверок, которые в парсинге XML очень полезны.

Так и зачем тогда это нужно.

Работа с XML на форуме расписана вдоль и поперек. Зачем велосипед с квадратными колесами изобретать?


Erfolg, File->New->Other->XMLBuilder
и будет счастье.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
BUGOR
Дата 24.9.2006, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



drkot, читай внимательно топик, я же написал в своём первом сообщении: "Посмотри внизу на похожие ссылки... если там не найдёшь, то накидаю тебе программу на регулярках.", человек стукнул ко мне в icq и попросил накидать пример потому, что у него не получилось что-то с готовыми компонентами, что касается условий, то всё вполне рационально т.к. данные шаблонны если тебя не устраивают ограничения, то нужно просто поправить регулярное выражение и всё. 
Я не считаю нужным юзать огромные библиотеки и компоненты, когда задача стоит всего-лишь в том, чтобы вытащить некоторые данные из документа, целиком его парсить вовсе ненужно. Вообще можно решить это с помощью двух-трёх стандартных функций и решение не будет громоздким, просто оно будет менее элегантным, нежели при использовании TRegExpr. 

К тому же я не вижу смысла в этом споре, ты предложил своё решение проблемы - я своё, пусть человек выбирает, есть по меньшей мере две причины по которым я выбрал собственную реализацию(в данном случае):
1. Собственная реализации будет быстрее.
2. Программу не так раздует. 

Это сообщение отредактировал(а) BUGOR - 24.9.2006, 14:46


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
drkot
Дата 24.9.2006, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(BUGOR @  24.9.2006,  14:37 Найти цитируемый пост)
Я не считаю нужным юзать огромные библиотеки и компоненты,

TRegExpr да это маленикая библиотека на 150 кил чистого кода + по скорости уступает стандартному парсеру раз в 10. 
Спецификация  XML "нестрогая": тоесть есть огромное число допущений по синтаксису и форматированию документа (даже в одном документе одни и теже поля могут быть сформатированы по разному - разделены #10#13 например) и учесть все это в регулярках сложно и нецелесообразно.
Из собственного опыта: в процессе конвертации из HTML(база) в XML(база) из примерно 2000 страниц не было автоматически разобрано порядка 150. Хотя эти страницы генерировались одним PHP скриптом, а регулярки предварительно хорошо оттестировались.

Цитата(BUGOR @  24.9.2006,  14:37 Найти цитируемый пост)
Вообще можно решить это с помощью двух-трёх стандартных функций и решение не будет громоздким, просто оно будет менее элегантным, нежели при использовании TRegExpr. 

Если Вы считаете что реализация в виде классов и интерфейсов менее элегантна то позволю с Вами несогласится.

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

Цитата(BUGOR @  24.9.2006,  14:37 Найти цитируемый пост)
 читай внимательно топик, я же написал в своём первом сообщении

Если Вы незнаете или не владеете средствами работы с XML (тема так и звучит) то наверное стоит почитать 
Цитата(BUGOR @  24.9.2006,  14:37 Найти цитируемый пост)
Посмотри внизу на похожие ссылки.

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

Добавлено @ 15:08 
Да и вдовесок.
Я нисколько не посягаю на Ваши знания в области регулярных выражений и их(выражений) ценности в решении поисковых задач.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
BUGOR
Дата 24.9.2006, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



Цитата

TRegExpr да это маленикая библиотека на 150 кил чистого кода + по скорости уступает стандартному парсеру раз в 10. 


В данном случае её использование не прибавляет к проекту и 20 кило, какой же прирост мы получим, если будет использовать метод предложенный вами? Я думаю это далеко не 20 Кб.  Насчёт скорости, это слова с неба или Вы их можете подкрепить доказательствами? Или давайте сравнивать, или про скорость работы TRegExpr не упоминать. 

Цитата

Если Вы считаете что реализация в виде классов и интерфейсов менее элегантна то позволю с Вами несогласится.


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

Цитата

или послушать что люди скажут, а не подставлять 5-е колесо к телеге.


Ну так скажите, что-нибудь по делу лучше, не поленитесь, возьмите и сравните по скорости и размеру(а что ещё важно клиенту? Красота кода или реализации? Не думаю.) несколько реализаций и покажите нам всем, что лучше, к чему попусту учить меня культуре программирования? Я признаю, что с XML дело не имел, поэтому если Вы мне докажите, что преимущество готовых классов очевидны(в контексте именно этой задачи, а не в целом, потому что я всё это говорю относительно данной темы), то я соглашусь, что в данном случае лучше использовать их.

Цитата

А потом такие "наученые" приходят на работу и валят перво еже задание, да и реализация получается такая, что вдрож кидает.


Я со своими задачами в этой области справляюсь, поэтому оставьте намёки при себе. 

Это сообщение отредактировал(а) BUGOR - 24.9.2006, 15:47


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
drkot
Дата 24.9.2006, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(BUGOR @  24.9.2006,  15:44 Найти цитируемый пост)
какой же прирост мы получим, если будет использовать метод предложенный вами?

Исходни весит 10-20кб в зависимости от сложности файла (полнофункциональная работа в XML базой), если только чтение то -20%, урезка по ненужным полям тоже пропорционально снижает; dcu примерно в 1-2 раза больше исходника (чем больше исходник тем относительно меньше dcu); вносимый в проект код 5-10кб.
Беблиотека TRegExpr: 150кб исходник; 60кб dcu; размер кода в проекте не мерял.
Цитата(BUGOR @  24.9.2006,  15:44 Найти цитируемый пост)
Насчёт скорости, это слова с неба или Вы их можете подкрепить доказательствами?

Цифры косвенные. Мерялось время загрузки и формирования в оперативке некоторой структуры записей. Так при использовании TRegExpr процесс занимал порядка 40-45сек, на стандартном делфяшном (микрософтовском) парсере укладывались в 3 сек. (при использовании парсера из поставки Jedy процесс разбора XML файла 25Мб занимал 120сек.)
Универсальный алгоритм не может работать быстрее специализированного.
Цитата(BUGOR @  24.9.2006,  15:44 Найти цитируемый пост)
Я сравнил релизацию с помощью стандартных функций(которая кстати наверняка быстрее, чем при использовании классов). 

В классах ипользуются теже стандартные функции, только классы сформированы специально под структуру файла, что позволяет работать с файлом как с обычной списком объектов.
Цитата(BUGOR @  24.9.2006,  15:44 Найти цитируемый пост)
Я со своими задачами в этой области справляюсь, поэтому оставьте намёки при себе

А это не в Вашу сторону сказал. Это скорее просто сотрясание воздуха. Просто часто попадаются программисты коротые решают поставленные задачи такими методами, что слов нехватает остается только молчать.
По поводу описания и разъяснений я подумаю о написании статьи. Если тема актуальна конечно.

PS: я знаю далеко не все (точнее сказать пости ничего), но стараюся прежде чем задавать вопросы (или советовать) изучить проблему.
Если чем обидел то приношу свои извенения.



--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
BUGOR
Дата 24.9.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



Цитата

Исходни весит 10-20кб в зависимости от сложности файла (полнофункциональная работа в XML базой), если только чтение то -20%, урезка по ненужным полям тоже пропорционально снижает; dcu примерно в 1-2 раза больше исходника (чем больше исходник тем относительно меньше dcu); вносимый в проект код 5-10кб.


Интересно, неужели универсальны класс для разрбора xml весит так мало? Судя по структуре XML он должен вешать не меньше TRegExpr.

Цитата

Беблиотека TRegExpr: 150кб исходник; 60кб dcu; размер кода в проекте не мерял.


Зато я померил и говорю, что это 18 Кб) 

Цитата

Универсальный алгоритм не может работать быстрее специализированного.


ВОТ, именно поэтому-то я и предложил инвидиальную реализацию, просто не думал, что TRegExpr даст проигрышь(хотя опять же в данном случае не факт). 

Цитата

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


Но опять же универсальность будет тормозить весь этот процесс. 




--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
drkot
Дата 24.9.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(BUGOR @  24.9.2006,  16:41 Найти цитируемый пост)
Но опять же универсальность будет тормозить весь этот процесс.

Здесь нет юниверсальности, структура классов и интерфейсы генерируются под конкретную структуру файла.

Положа руку на сердце скажу: "В данной конкретной задаче победит pos + copy + delete." 
Конкретная ситуация, конкретное решение, максимум скорости (особенно если оптимизированные функции использовать).


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0582 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.