Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi

Модерирует : ShIvADeSt

ShIvADeSt (20-04-2006 01:53): http://forum.ru-board.com/topic.cgi?forum=33&topic=6679#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

   

reenoip



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Короче, полный финиш... D2006 в моём городе ещё не продают. Более того, во всех точках о ней ещё даже не слышали (!!!), и говорят, что ожидают (!!!) версию 2005 - дескать, "самую последнюю". Не спрашивайте даже, где живу. Условно назовём это Маленьким Городом Больших Тормозов.
Отсюда вытекает крайняя мера: где можно скачать наиболее полную версию Delphi2006 (мне всякие навороты не нужны; главное - чтобы ADO и win32 были)? Размер (чего уж теперь мелочиться) значения не имеет. Если здесь нельзя постить линки, то будьте добры, на pioneer@mail.kz, или в личку. Сразу скажу, что в Сети уже искал самостоятельно - результат нулевой, увы.
Спасибо.
 
p.s
Поставил только что D8. Хоть краем глаза посмотреть, чего я пропустил...

Всего записей: 1768 | Зарегистр. 10-03-2006 | Отправлено: 17:18 07-04-2006
ALeXkRU



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
reenoip
сюда сходи... недавно как раз об этом речь шла...

Всего записей: 11802 | Зарегистр. 03-12-2003 | Отправлено: 18:45 07-04-2006
Glukodel



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди, подскажите, куда копать... задача: есть класс, с полями и наследником TObjectList  внутри... нужно как-то его со всем этим гамузом сохранить в blob поле базы, а потом вычитать... т.е. подобие того, как делфи сохраняет данные в dfm, тока пишем в базу...

Всего записей: 97 | Зарегистр. 16-08-2004 | Отправлено: 18:45 07-04-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Glukodel
Обрати внимание на класс TPropsStorage из RX. Он как раз занимается сохранением пропертей для некоторого объекта. Объект должен быть наследником TPersistent'а и свойства, которые собираешься сохранять должны быть published.

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 18:50 07-04-2006
FRALX

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
reenoip
урл была тут
и еще можно сходить сюда  





подобные линки в варезнике

Всего записей: 110 | Зарегистр. 15-12-2005 | Отправлено: 01:28 08-04-2006 | Исправлено: ShIvADeSt, 01:59 10-04-2006
ArtemiyUO

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята покажите пожалуйста как с помощью TSAXXMLReader прочитать ХМЛ фаил. Ну или есть какойнибудь компоненты простой. Те что я находил во первых старые, а во вторых не разобрался до конца как работают, вообщем мне не понравились.
Мне надо пробежать по ХМЛ фаилу и загрузить данные в свою структуру.
Искал примеры и на сайте и гуглом не нашел не одного.
Нужен имменно сах парсер потому что нужна скорость и мало памяти. Файлы огромные, ДОМ парсер жрет 500 мб рама)

Всего записей: 539 | Зарегистр. 12-12-2005 | Отправлено: 13:33 10-04-2006
Glukodel



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vshersh
посмотрел.... но до этого уже сделал работающий вариант - основной класс наследуется от TComponent, объекты, хранящиеся в TObjectList - тоже... после этого стало возможным
сделать так:
    MS := TMemoryStream.Create();
    i := flt.InstanceSize;
    ms.WriteComponent(flt);
    ms.Write(flt.FilterIncl.Count, sizeof(flt.FilterIncl.Count));
    for i := 0 to flt.FilterIncl.Count - 1 do
    begin
      fr := flt.FilterIncl.Records[i];
      ms.WriteComponent(fr);
    end;
где flt - экземпляр осноного класса, в flt.FilterIncl.Records[i] - экземпляры класса, где есть только поля (текст, инты...) так вот вопрос  
при считывании обратно все нормально, когда для последнего класса все поля заполнены... если текстовое поле сохранялось пустым, то при считывании в него попадает предыдущее непустое значение... и так до тех пор, пока не попадется поле со значением... считываю так:
    MS := TMemoryStream.Create;
    fr := TFilterRec.Create;
    ADOQuery1StructData.SaveToStream(ms);
    ms.Position := 0;
    ms.ReadComponent(filter);
    ms.Read(n, sizeof(filter.FilterIncl.Count));
    for i := 0 to n - 1 do
    begin
      ms.ReadComponent(fr); // уже здесь под отладчиком видно, что пустое поле
//содержит значение от предыдущего объекта...
      filter.FilterIncl.AddFilterRec(fr); //это запихивание в TObjectList,  
//но данные уже не те...
    end;
где провтыкал?
P.S. все это пишется и читается в blob поле, но по-моему грабли в работе с потоком...

Всего записей: 97 | Зарегистр. 16-08-2004 | Отправлено: 13:36 10-04-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Glukodel
Может дело в директивах свойств (Storage specifiers)?
Попробуй поставить nodefault

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 13:47 10-04-2006
Glukodel



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vshersh Спасибо, nodefault посмотрел, о Storage specifiers почитал.... непомогло...
обошел тупо добавляя пробел к зачению строки, а обратно соответственно юзаю trim...
мабуть, похорошему, надо делать полную "сериализацию", используя наследников TCollection и TCollectionItem...........

Всего записей: 97 | Зарегистр. 16-08-2004 | Отправлено: 14:19 10-04-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ArtemiyUO
Посмотри _http://www.simdesign.nl/xml.html

Цитата:
Unique feature: Add XML nodes to a file that exists on disk without reading the complete file! The additional unit XmlAppends will search from the end of the (possibly huge) file on disk and append node data there directly. See Example 4.

Сам не юзал - не знаю. Но говорят штуковина неплохая.  
Если хош, могу подсобить с FS (ПМ)
 
Было бы интересно узнать реальный бенчмарк этих классов на больших объемах

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 16:44 10-04-2006
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такая проблема. Я все время программировал на Фортране консольные проги для обработки данных. И вот приперло - надо сделать гуёвую прогу (в смысле с GUI) для интерактивной обработки данных. Как пишут в справке для компиляторов Фортрана, обычный путь - смешанное программирование: вычисления на Фортране, GUI - на С++, Visual Basic, Delphi.
 
В общем, попробовал я так сделать. C/C++ почему-то у меня вызывает сильнейшую аллергию, Visual Basic - нет, но когда я попытался его осваивать, то понял, что программировать я на этом не буду. Пересел сначала на PowerBasic, но возникли сложности. Вот захотелось мне определенный элемент ActiveX прикрутить для построения графиков, но у PowerBasic с ActiveX большие проблемы. То есть у прог для визуального программирования на PowerBasic таких проблем практически нету, но эти проги не бесплатны и лечилова к ним нет.
 
А поскольку этот самый ActiveX (DynaPlot3) меня просто потряс своими возможностями (точнее, тем, насколько они совпадают с моими потребностями), подумал я о переходе на Delphi. Фаронова купил. Но вот заковыка: у меня на PowerBasic уже прописана начальная часть проги. И отлажена. А там разные окошки для сбора предварительной инфы, стандартные диалоги открытия обрабатываемых файлов и т.п. С этими диалогами я долго возился, сделал так, что можно использовать два варианта: загружать список обрабатываемых файлов (как у меня было в консольных прогах) или выбирать сами обрабатываемые файлы (много штук) в окне стандартного диалога. Ну и мне не охота это все пускать псу под хвост. PowerBasic позволяет запихать все это в DLL и потом вызвать в виде подпрограммы из какой-нибудь проги, то есть теоретически это можно пустить в дело.  
 
А практически - такая проблема: нужно получить названия файлов (прочитать из списка или получить названия из диалога - не важно). И это я хочу кинуть в DLL, используя уже написанное на PowerBasic. Оформлено это дело у меня как строковый массив, что логично. Размерность этого массива я узнаю только в ходе выполнения подпрограммы. И получается, что я не могу описать этот массив в основной программе, которая вызывает DLL. Во всяком случае, у Фаронова я массивов, которые позволяют с собой работать при неизвестной размерности, не обнаружил. Ну, можно сделать так, как поступает стандартный диалог открытия файлов: прописать все значения в одну строку подряд с какими-нибудь разделителями, и такой вариант прокатит на ура. А нельзя ли все же перекинуть имена файлов через массивы (записи, ...)?
 
То есть я понимаю, что можно навертеть все это дело заново, и стандартный диалог открытия файлов сидит на одной из страничек с компонентами Delphi, но вот жалко потраченного времени.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 23:14 10-04-2006
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А практически - такая проблема: нужно получить названия файлов (прочитать из списка или получить названия из диалога - не важно). И это я хочу кинуть в DLL, используя уже написанное на PowerBasic. Оформлено это дело у меня как строковый массив, что логично. Размерность этого массива я узнаю только в ходе выполнения подпрограммы. И получается, что я не могу описать этот массив в основной программе, которая вызывает DLL. Во всяком случае, у Фаронова я массивов, которые позволяют с собой работать при неизвестной размерности, не обнаружил. Ну, можно сделать так, как поступает

Один ответ - динамические массивы, а именно a:array of type где type - тип массива. В либе реализуй функцию, которая возвращает размерность массива и потом через SetLength(a,lngth) устанавливай его размерность. И далее по хелпу, рахбираться 10 минут. А вообще я бы не мучался с этим, а переписал бы диалог загрузки файлов, ибо лучше день потерять, а потом за час долететь (с) из мультика. Хотя дело хозяйское.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:10 11-04-2006
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как я понимаю, динамический массив все же не прокатит. Допустим, я в подпрограмме получил из стандартного диалога открытия файла штук 60 выбранных юзером названий + путь к папке, посчитал, сколько их набралось, сформировал массив нужной размерности и нашинковал их всех туда. Пока я не обратился к подпрограмме, я не знаю, сколько файлов юзер выберет. Может, вообще один. А когда я к ней обращаюсь, я уже в этот момент должен этому динамическому массиву задать размерность. То есть если бы это была обычная подпрограмма, я бы мог к ней обратиться 2 раза, в первый раз узнать число файлов и состряпать массив нужного размера, а во второй раз считать сам массив. Но для этого массив нужно объявить как Static, а для DLL, как я понимаю, это не пройдет. Так что придется передавать строкой.
 
Ну, случай с чтением списка файлов тривиальный, его можно было бы без проблем переписать, просто на вариант с выбором нескольких файлов я угробил много времени и добился, что все прекрасно работает. А при не очень хорошем знании Delphi опять буду с ним продолжительно кувыркаться.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 09:49 11-04-2006
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
XPEHOMETP
Сделай передачу списка файлов в виде строки - тогда и вызывать можно не только из делфи, и проблем с менеджерами памяти и тяганием за программой borlandmm.dll не будет.
 
Опиши в библиотеке глобальную переменную и функцию, возвращающую указатель на нее:

Код:
 library MyDll;
var
  FileList: string;
 
function GetFileList: PAnsiChar; stdcall;
begin
  .....
  Result := PAnsiChar(FileList);
end;
 
exports
  GetFileList;
 
begin
end.

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 10:21 11-04-2006 | Исправлено: RomanTim, 10:22 11-04-2006
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPEHOMETP

Цитата:
А практически - такая проблема: нужно получить названия файлов (прочитать из списка или получить названия из диалога - не важно). И это я хочу кинуть в DLL, используя уже написанное на PowerBasic. Оформлено это дело у меня как строковый массив, что логично.  

Переведи этот массив в строку типа PChar, делай разбор этой строрки уже в DLL.
Почитай по особенностям программирования DLL предназначенных для работы с разными языками программирования.
 

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 11:15 11-04-2006
SergeBS



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPEHOMETP
Tstrings + F1 - то, что тебе нужно. Сколько надо, столько строчек и создашь.
Плюс хинт: максимальная длина названия файла - это  константа, характеризующая систему. Названия только не помню .

Всего записей: 272 | Зарегистр. 19-04-2005 | Отправлено: 11:16 11-04-2006
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, конечно, только от варианта со строкой я как раз хотел уйти. В общем, это даже проще: кидать на выход строку, полученную из диалога открытия файлов с минимальной подработкой. А вот для варианта с чтением списка файлов - это только лишняя тягомотина. Ладно, этот вариант переписать в основную программу как раз проще всего.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 12:40 11-04-2006
yuraskas



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите новичку написать маленькую программку.  
Нужно чтобы после выбора пути в OpenDialog в поле Memо записывались имена всех имеющихся в выбранной папке файлов.

Всего записей: 530 | Зарегистр. 06-06-2003 | Отправлено: 14:12 11-04-2006 | Исправлено: yuraskas, 14:15 11-04-2006
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
С листбоксом:
 
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
  if OPenDialog1.Execute then
  begin
    s:=ExtractFilePath(OPenDialog1.FileName)+'*.*';
    ListBox1.Perform(LB_DIR, DDL_READWRITE {or DDL_DIRECTORY}, Longint(@s[1]));
  end;
end;

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 15:05 11-04-2006
yuraskas



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Круто, получилось, но вот в мемо бы засунуть, потому что мне эти списки фалов надо выделять и копировать.

Всего записей: 530 | Зарегистр. 06-06-2003 | Отправлено: 15:16 11-04-2006
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi
ShIvADeSt (20-04-2006 01:53): http://forum.ru-board.com/topic.cgi?forum=33&topic=6679#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru