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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

   

evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Larry Laffer
Можно поколдовать с функцией IntToHex (Считать файл, сказать что это массив чисел и прогнать по нему эту функцию, результат в другой массив). Может есть и готовое что, не встречался.

----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 17:59 29-05-2005
Larry Laffer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
evle, да я часа три так с бубном танцевал. Не выходит нифига.

----------
Save The Planet -- Kill YourSelf!
http://larry.nxt.ru

Всего записей: 604 | Зарегистр. 09-10-2004 | Отправлено: 18:48 29-05-2005
KDA

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Larry Laffer
Оптимизировать сам будешь
 
function FileToHex(const aInputFileName, aOutputFileName : String) : Boolean;
const
  HexChars : array [0..15] of Char = '0123456789ABCDEF';
var
  B : Byte;
  Input, Output : TFileStream;
begin
   Result := False;
   Input := nil;
   Output := nil;
   try
     Input := TFileStream.Create(aInputFileName, fmOpenRead);
     Output := TFileStream.Create(aOutputFileName, fmCreate);
     while Input.Position < Input.Size do begin
        Input.Read(B, 1);
        Output.Write(HexChars[B shr 4], 1);
        Output.Write(HexChars[B and $f], 1);
        end;
      Result := True;
   finally
     Input.Free;
     Output.Free;
   end;
end;

Всего записей: 265 | Зарегистр. 30-12-2001 | Отправлено: 19:28 29-05-2005
Larry Laffer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KDA, спасибо, оптимизирую.

----------
Save The Planet -- Kill YourSelf!
http://larry.nxt.ru

Всего записей: 604 | Зарегистр. 09-10-2004 | Отправлено: 19:58 29-05-2005
ViktorSila

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
К проге подключены два модуля.  
1. Потомок от DataSet(MyDataSet)
2. Во втором модуле (MyData) данные с которыми работает это MyDataSet, и пару обработчиков собитий к MyDataSet-у.  
В потомке они представлены:
 
Цитата:
 
   FPerformClearFields: procedure(Index: integer) of object;
   FPerformCreateFloatingRecord: function(SourceIndex: integer): integer of object;
   FPerformFreeFloatingRecord: procedure(Index: integer) of object;
   ....
   

А их обработчики в MyData(2-ой модуль):
 
Цитата:
procedure TMyData.ClearFields(Index: integer);
begin
  TMyRecord(List[0]).Name := '(name)';
  TMyRecord(List[0]).EMail := '(email)';
end;
....
 

 
Как подключить к MyDataSet (или к его экземпляру) обработчи событий, определенных в модуле MyData????

Всего записей: 54 | Зарегистр. 04-02-2005 | Отправлено: 17:23 30-05-2005
YurikGL



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

Цитата:
Как подключить к MyDataSet (или к его экземпляру) обработчи событий, определенных в модуле MyData????

 
Попробуй присваивать события  
 
procedure TForm1.my(Sender: TObject);
begin
Edit2.Text:=Edit1.Text;
end;
 
procedure TForm1.FormShow(Sender: TObject);
begin
Edit1.OnChange:=my;
end;
 
В данном примере я при Edit1.OnChange выполняется процедура my;

Всего записей: 308 | Зарегистр. 02-09-2004 | Отправлено: 19:31 30-05-2005
ViktorSila

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

Цитата:
MyDataSet: TMyDataSet;
MyDData: TMyData;
....  
 

то  

Цитата:
 MyDataSet.FPerformGetRecordCount := MyDData.GetRecordCount;

работает, но это процедура. А как быть с функциями???
Да и вообще, что это за переменные

Цитата:
    FPerformSetFieldData: procedure(Index: integer; Field: TField; var Data)
    of object;
    FPerformGetCanModify: function: boolean of object;
   


Всего записей: 54 | Зарегистр. 04-02-2005 | Отправлено: 21:18 30-05-2005
YurikGL



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

Цитата:
но это процедура. А как быть с функциями???  

 
В чем принципиальная разница?

Всего записей: 308 | Зарегистр. 02-09-2004 | Отправлено: 07:43 31-05-2005
vserd

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

Цитата:
работает, но это процедура. А как быть с функциями???  
Да и вообще, что это за переменные  

RTFM Delphi Help (Procedural types). Очень занимательно.

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 10:59 31-05-2005
ViktorSila

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vserd
Спасибо, разобрался!!!!

Всего записей: 54 | Зарегистр. 04-02-2005 | Отправлено: 19:42 31-05-2005
Skipper



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется TreeView вида:
 
Delphi
 |
 |-----5.txt
 |
 |-----6.txt
 |
 |-----7.txt
 |
 |--Help
 |   |
 |   |-----Test1
 |           |
 |           |------test.txt
 |
 |--Конец
 
Подскажите, пожалуйста, как создать такое же дерево файлов и папок, но только уже на HDD. Желательно пример работы.

Всего записей: 961 | Зарегистр. 23-06-2002 | Отправлено: 18:08 01-06-2005
Larry Laffer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Skipper, то есть брать дерево из программы и на его основе создавать папки и каталоге на жестком диске, так что ли? Используй команду ForceDirectories.

----------
Save The Planet -- Kill YourSelf!
http://larry.nxt.ru

Всего записей: 604 | Зарегистр. 09-10-2004 | Отправлено: 18:14 01-06-2005
YurikGL



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Можно рекурсивно оббежать дерево и насоздовать папок.

Всего записей: 308 | Зарегистр. 02-09-2004 | Отправлено: 20:46 01-06-2005
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Skipper
тут самое лучшее - рекурсивная обработка. ПРимер кода (правда возможно доработка понадобиться) Рабочий

Код:
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  CreatePapki(TreeView1.Items[0],'C:\tem');
end;
 
procedure TForm1.CreatePapki(r: TTreeNode;d:string);
begin
  if r=nil then exit;
  while r<>nil do
    begin
      if ForceDirectories(d+'\'+r.Text) then memo1.Lines.Add(d);
      CreatePapki(r.getFirstChild,d+'\'+r.Text);
      r:=r.getNextSibling;
    end;
end;
 


----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 20:59 01-06-2005
vinnik_pux

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как заставить дельфи 7 вводить на сайтах автоматически логин пароль (например на мыло)? если использовать самописный браузер на дельфях
 
Добавлено:
тоесть хочу сделать автоматическое заполнение web форм

Всего записей: 43 | Зарегистр. 17-07-2004 | Отправлено: 23:43 01-06-2005
bask1982

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi + Outlook2003:
Как получить доступ к полю "Body" у Appointment'а без вызова защиты Outlook'а(окошка с выбором времени на длительность доступа)?

Всего записей: 37 | Зарегистр. 22-03-2005 | Отправлено: 11:37 02-06-2005
CreoVision



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вот, у меня есть несколько вопросов.  
1.Обьясните пожалуйста, зачем нужны потоки, что это такое?
2.Обясните что такое указатели и зачем они нужни,  
 
 
Спасибо... Только не сильно заумно, а человеческим языком.

Всего записей: 117 | Зарегистр. 14-02-2004 | Отправлено: 11:55 02-06-2005
Larry Laffer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
CreoVision,
1. Поток - это отдельный процесс, выполняющийся параллельно основной работе программы. Пройстеший пример потока - проверка орфографии в Microsoft Word. Этот модуль отведен в отдельный поток. Если бы проверка орфографии выполнялась в основном потоке, то программа жутко бы тормозила при наборе текста (т.к. во время проверки происходит достаточно нелегкий процесс поиска соответствий по словарю).
 
Поток можно использовать, если какие-то функции должны выполняться параллельно основному процессу. Или можно какие-либо повторяющиеся с течением времени проверки программы запихнуть в отдельный поток.
 
2. Указатели: не знаю даже, как дать определение. Попробую объяснить. При использовании какой-нибудь процедуры, использующей какие-либо входные параметры (число, строка), перед непосредственным её выполнением программа подгружает входные параметры (переменные) в область памяти, а только потом извлекает их оттуда для работы. Указатель может передать твоей процедуре адрес на область памяти, где находится твоя переменная. То есть, используя указатель, тебе не придется передавать целую строку процедуре, а только указать область памяти, где эта строка находится.
 
Вот. Вроде так.

----------
Save The Planet -- Kill YourSelf!
http://larry.nxt.ru

Всего записей: 604 | Зарегистр. 09-10-2004 | Отправлено: 12:11 02-06-2005 | Исправлено: Larry Laffer, 12:20 02-06-2005
CreoVision



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Larry Laffer
т.е. Поток-это отдельная подпрограмма...
Чего можно добиться используя потоки...
Зачем чтение из потока, запись в поток???
 
 
 
Добавлено:
Larry Laffer
 
Указатели
 
А почему вместо указателя нельза переменную использивать...
 
Недоходит...
 
 
Добавлено:
А как например, загрузить процедуру, модуль в потоки, примерчик можна?

Всего записей: 117 | Зарегистр. 14-02-2004 | Отправлено: 12:18 02-06-2005 | Исправлено: CreoVision, 12:30 02-06-2005
Larry Laffer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
CreoVision, про чтение и запись: это то же самое, если твоя главная форма у программы будет обмениваться данными с дочерней. Например, ты хочешь в своей программе по-тихому просканировать реестр и что-то там найти. Если ты будешь делать модуль сканирования реестра в главном юните, то при выполнении программа как бы зависнет (если не вставлять  процедуру Application.ProcessMessages). Если же ты вынесешь модуль сканирования реестра в отдельный поток, то это практически никак не отразится на работе самой твоей программы (т.е. главной формы). В то же время твоя программа может обмениваться данными с потоком (если ты нашел что-нибудь необходимое в реестре, что тебе нужно утянуть). И передавать данные в поток, например, для задания опций сканирования.
 
Добавлено:
CreoVision, с указателями я не работал, пытался объяснить из теоретических знаний. Думаю, что местные гуру объяснят лучше. Вот с потоками мне работать приходилось.

----------
Save The Planet -- Kill YourSelf!
http://larry.nxt.ru

Всего записей: 604 | Зарегистр. 09-10-2004 | Отправлено: 12:29 02-06-2005
   

Страницы: 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-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru