Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 147
от 09.06.2005, 16:30

Администратор:Калашников О.А.
В номере:Вопросов: 8, Ответов: 24


Вопрос № 21723: Добрый день. Не получается составлять дерево с ini файла: [Users] Mendal=3498057 Koncer=4504590 Anna=3434 [Admins] Kidmen=35252453 Sernet=342424 И т.д. В ini постоянно добавляются пользователи, группы TreeV...
Вопрос № 21731: Всем добрый вечер. Подскажите каким образом можно добавить в ini, только секцию Я пробую так: procedure TForm1.Button2Click(Sender: TObject); var Ini:TIniFile; e:string; begin Ini := TIniFile.Create(GetAppPath+'options.i...
Вопрос № 21734: Вопрос у меня немнога организационный. Дело в том, что я занимался программеньем на Делфях, но в силу объективных причин (2 года в армии) многое подзабылось (как надену портупею всё тупею и тупею). Так что ничего, что буду задавать иногда ламерские ...
Вопрос № 21736: Здраствуйте Экспреты. У меня вопрос в чем у меня ошибка. Я создаю класс наследник StringGrid'a , но почему-то при инсталировании он выдает ошибки даже на подключенные библиотеки. Помогите пожалуйста. Код наследника смотрите в приложении<b...
Вопрос № 21738: Уважаемые, Эксперты!!! Очень прошу вас помочь, потому что у меня ничего не получается. Мне надо создать класс - наследник класса TStringGrid, объект которого при нажатии кнопки F11 выводит в отдельном окне информацию про свои параметры: Name,...
Вопрос № 21757: Здравствуйте эксперты! Как можно с минимальным кодом и наилучшим быстродействием выделить из строки S подстроку и дополнительные параметры. Строки такого типа: S:='Vozrast=20', где 'Vozrast'-подстрока а 20 - парамерт. Причем параметров может ...
Вопрос № 21759: Привет всем! Подскажите компоненты или модули для работы с MAPI. ...
Вопрос № 21760: Доброе вреям суток!!! Сам программирую на дельфи и возникло 3 вопроса. 1. Как мне извлечь из ресурса файл? Не повредив. Как добавить знаю как мне его извель вот в чем вопрос :) Ресурс - EXE 2. Какой защитой мне защитить exe файл чтоб бе...

Вопрос № 21.723
Добрый день.
Не получается составлять дерево с ini файла:
[Users]
Mendal=3498057
Koncer=4504590
Anna=3434
[Admins]
Kidmen=35252453
Sernet=342424
И т.д.
В ini постоянно добавляются пользователи, группы
TreeView должно быть вида, пример:
+Users
-Mendal
-Koncer
-Anna
+Admin
-Kidmen
-Sernet
Посоветовали использовать следующий код:
{}function IniFile_ReadSection(const aFile, aSection: string; aStrings: tStrings): boolean;
var
IniFile: TIniFile;
begin
Result:=false;
IniFile := TIniFile.Create(aFile);
try
if IniFile<>nil then begin
IniFile.ReadSection(aSection, aStrings);
Result:=true;
end;
finally
FreeAndNil(IniFile);
end;
end;
var
StrList: tStringList;
begin
if IniFile_ReadSection('iniFile', 'Администраторы', StrList) then begin
xNode:= TreeView1.Items.Add(nil, 'Администраторы');
for i:=0 to StrList.Count-1 do begin
TreeView1.Items.AddChild(xNode, StrList[i]);
end;
end;
Но куда его подставить, не могу понять ?
Помогите пожалуйста решить данную проблему, на конкретном моем примеры.
С Уважением, Алексей
Отправлен: 03.06.2005, 17:45
Вопрос задал: Алексей (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Bochvarov NikB
Здравствуйте, Комов!
IniFile_ReadSection самостоятелная процедура, можно ставит где угодно (оно универсалная)
Остальное надо ставит там, где хочеш постоит дерево. Конечно, если нужно, надо очищит (стереть) все узльи перед ногого построения.
Надо сделать и декларацию xNode (tTreeNode, думаю:)
И если опять будут проблемьи - я напишу тебе все.
А кроме Ана, бьила и Таня, она куда пошла?
Ответ отправил: Bochvarov NikB (статус: 3-ий класс)
Отправлен: 03.06.2005, 18:22

Отвечает: Denisss
Здравствуйте, Комов!
Вот Вам чуть более подробно :) (см. код)

Приложение:

Ответ отправил: Denisss (статус: 3-ий класс)
Отправлен: 03.06.2005, 18:28


Вопрос № 21.731
Всем добрый вечер.
Подскажите каким образом можно добавить в ini, только секцию
Я пробую так:
procedure TForm1.Button2Click(Sender: TObject);
var Ini:TIniFile;
e:string;
begin
Ini := TIniFile.Create(GetAppPath+'options.ini');
e:=Edit1.Text;
Form1.TreeView1.Items.Add(Nil,e);
if (e='') then ShowMessage('одно из полей пустое') else
Ini.Writestring(e,'','');
INI.Free;
end;
Подскажите как правильно нужно делать.
И правлильно ли я добавляю коревую ветку:
Form1.TreeView1.Items.Add(Nil,e);
Отправлен: 03.06.2005, 20:12
Вопрос задал: Алексей (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Denisss
Здравствуйте, Алексей!
ответ на Ваш вопрос в приложенном коде

Приложение:

Ответ отправил: Denisss (статус: 3-ий класс)
Отправлен: 03.06.2005, 20:57
Оценка за ответ: 5
Комментарий оценки:
То что нужно

Отвечает: sir henry
Здравствуйте, Алексей!
1. Только секцию в ini-файл добавить, увы, нельзя. Можно записать пустую строчку или вообще какое-либо значение. При этом, если секция не существует, то она автоматически создается.
Встречный вопрос - зачем создавать секцию, если в ней ничего нет? :)
2. Правильно.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 04.06.2005, 12:05
Оценка за ответ: 4
Комментарий оценки:
Пустая секция - это будут при считывании корневые ветки TreeView


Вопрос № 21.734
Вопрос у меня немнога организационный. Дело в том, что я занимался программеньем на Делфях, но в силу объективных причин (2 года в армии) многое подзабылось (как надену портупею всё тупею и тупею). Так что ничего, что буду задавать иногда ламерские (как выражался наш комбат албанские) вопросы.
В частности, сейчас интересует как с помощью компоненты TreeView просмотреть все файлы текущего каталога (а точнее их имена) и получить к ним доступ. А также все файлы подкаталогов (имена и доступ к каталогам самим не нужны).
Ещё раз извиняюсь за ламерский вопрос, но 2 года в армии снижают IQ на 100 если не больше.
Отправлен: 03.06.2005, 22:54
Вопрос задал: Уваров Сергей Васильевич (статус: Посетитель)
Всего ответов отправлено: 4

Отвечает: Jadd
Здравствуйте, Уваров Сергей Васильевич!
Открываешь хелп или msdn и ищешь инфу по FindFirst и FindNext. Например:
var
FindData: TSearchRec;
DirPath: String;
FileAttrs: Integer;
fFinished: Boolean;
begin
fFinished := false;
//extract exact path
DirPath := UpperCase(Application.ExeName);
Delete(DirPath, Pos('myexe.EXE', DirPath), Length('SALOON.EXE'));
DirPath := DirPath + '*.*';
//например ищем в папке экзешника
FindFirst(DirPath, FileAttrs, FindData);
while not fFinished do
begin
//добавляем в список все файлы по имени
List.Add(UpperCase(FindData.Name));
if FindNext(FindData) <> 0 then
begin
if GetLastError <> ERROR_NO_MORE_FILES then
ShowMessage('Can`t find next file');
fFinished := true;
end;
end;
FindClose(FindData);
Если почитать внимательно описание структуры TSearchRec, там можно много интересного найти. Удачи в твоих изысканиях.
---------
Hakuna matata
Ответ отправил: Jadd (статус: 7-ой класс)
Отправлен: 04.06.2005, 00:45
Оценка за ответ: 2

Отвечает: sir henry
Здравствуйте, Уваров Сергей Васильевич!
В Дельфях есть закладка с компонентами для Win 3.1 (типа устаревшие) и на этой закладке есть компоненты:
- TDirectoryListBox - с помощью этого компонента Вы выбираете нужный Вам каталог;
- TFileListBox - с помощью этого компонента Вы выбираете нужный Вам файл.
Более новый (и рекомендуемый к использованию) компонент - TOpenDialog. При вызове его, появляется окошко с файлами и каталогами, в том каталоге, который Вы указали:
OpenDialog.InitialDir:='c:windows';
OpenDialog.Execute;
Правда все они работают не в стиле TreeView. :)
На вкладке SAMPLES есть компонент TDirectoryOutLine, он показывает каталоги и подкаталоги в стиле TreeView.
На сайте www.torry.net есть несколько компонентов в стиле Explorer (с исходным кодом), которые как раз работают в стиле TreeView. Скачайте и посмотрите исходники.
Ссылка:
http://www.torry.net/pages.php?id=248
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 04.06.2005, 12:25

Отвечает: Delphin
Здравствуйте, Уваров Сергей Васильевич!
Используй FindFirst , FindNext для поиска файлов!
Все задавай в TSearchRect.
Слушай у тебя такая фамилия как у меня :) 1 в 1.
Если че в ICQ: 77778851
Тока напиши что с RusFAQ
---------
Ищу сервис пак для школы ^)))
Ответ отправил: Delphin (статус: 4-ый класс)
Отправлен: 04.06.2005, 13:28

Отвечает: streetcat
Здравствуйте, Уваров Сергей Васильевич!
В стандартной палитре компонентов Дельфи есть компонент TShellTreeView (обычно на вкладке Samples) или более старый TDirectoryOutline (там же) ну или TDirectoryListBox (вкладка Win 3.1)
пользуйся ими, солдат, будет в десятки раз легче чем просто с TreeView.

---------
WinERROR: Keyboard not detected. Press Enter to continue
Ответ отправил: streetcat (статус: 6-ой класс)
Отправлен: 04.06.2005, 20:49


Вопрос № 21.736
Здраствуйте Экспреты.
У меня вопрос в чем у меня ошибка. Я создаю класс наследник StringGrid'a , но почему-то при инсталировании он выдает ошибки даже на подключенные библиотеки.
Помогите пожалуйста.
Код наследника смотрите в приложении
С Уважением
Ujin Antikvar

Приложение:

Отправлен: 03.06.2005, 23:44
Вопрос задал: Ujin Antikvar (статус: 1-ый класс)
Всего ответов отправлено: 3

Отвечает: John Freeman
Здравствуйте, Ujin Antikvar!
А как у тебя с английским???
TMyGrid и TMyGrids идут через 1
ЧТО ТАКОЕ ЗА IF KEY= ... ??? Если просто параметр, то ему не место здесь, если
обработчик OnKeyPress - заменяй OnKeyPress у родителя так же как и Constructor
Кстати конструктор криво написан, все методы в Protected - это бред(я бы сказал что лучше в public, но это уже философский вопрос).
Идём дальше:
Property TextCols: TStrings read GetCols write SetCols;
Это наоборот в Protected надо, а уже Read&Write будут делать то что надо!
В общем чистая матчасть,ничего с чем стоило бы обращаться к экспертам, а сначала элементарно почитать что пишет компилятор.

Приложение:

---------
Время надирать задницы и жевать жвачку. Чёрт, но у меня кончилась жвачка!!!

Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 04.06.2005, 00:24

Отвечает: sir henry
Здравствуйте, Ujin Antikvar!
А какую ошибку то выдает? Что же Вы не пишете?
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 04.06.2005, 12:31

Отвечает: Delphin
Здравствуйте, Ujin Antikvar!
Че то ты тут намудрил...
Что пишет компилятор?
Пробуй так:

Приложение:

---------
Ищу сервис пак для школы ^)))

Ответ отправил: Delphin (статус: 4-ый класс)
Отправлен: 04.06.2005, 13:26


Вопрос № 21.738
Уважаемые, Эксперты!!!
Очень прошу вас помочь, потому что у меня ничего не получается.
Мне надо создать класс - наследник класса TStringGrid, объект которого при нажатии кнопки F11 выводит в отдельном окне информацию про свои параметры: Name, RowCount, ColCount, FixedRows, FixedCols, Left, Top.
Помогите пожалуйста или объясните как создать.
Зарание всем огромное спасибо!!!
С Уважением, ко всем экспертам
Ujin Antikvar
Отправлен: 04.06.2005, 01:07
Вопрос задал: Ujin Antikvar (статус: 1-ый класс)
Всего ответов отправлено: 3

Отвечает: John Freeman
Здравствуйте, Ujin Antikvar!
Не понял, а зачем свой компонент то???
Обрабатываешь оригинальное OnKeyPress:
if Key = VK_F11 then
ShowMessage('Name = '+Name+#10#13#10+'RowCount = '+IntToStr(RowCount)+
#10#13#10+'ColCount = '+IntToStr(ColCount)+#10#13#10+'FixedRows = '+
IntToStr(FixedRows)+#10#13#10+'FixedCols = '+IntToStr(FixedCols)+#10#13#10
+'Left = '+IntToStr(Left)+#10#13#10+'Top = '+IntToStr(Top));
Ну или это же пишешь в Override OnKeyPress твоего компонента(точнее это уже не совсем override и не OnKeyPress...), вот и вся разница будет у него с оригинальным.
---------
Время надирать задницы и жевать жвачку. Чёрт, но у меня кончилась жвачка!!!
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 04.06.2005, 01:20

Отвечает: sir henry
Здравствуйте, Ujin Antikvar!
Запишите в событие OnKeyDown реакцию на нажате клавиши F11. Никакого наследника для этого создавать не надо.
If Key=VK_F11 Then
MessageBox(0, Выводимая_инфа, Заголовок_окна, MB_OK);
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 04.06.2005, 12:38

Отвечает: Delphin
Здравствуйте, Ujin Antikvar!
1. Создайте компонент наследник TStringGrid.
2. Создайте процедуру отловки сообщений Windows.
3. Если сообщение WM_KEYDOWN с параметром клавиши ваше (F11) то вывод своих данных. Name, RowCount, ColCount, FixedRows, FixedCols, Left, Top - думаю знаете как узнать?
---------
Ищу сервис пак для школы ^)))
Ответ отправил: Delphin (статус: 4-ый класс)
Отправлен: 04.06.2005, 13:25


Вопрос № 21.757
Здравствуйте эксперты!
Как можно с минимальным кодом и наилучшим быстродействием выделить из строки S подстроку и дополнительные параметры. Строки такого типа:
S:='Vozrast=20', где 'Vozrast'-подстрока а 20 - парамерт. Причем параметров может быть несколько, разделенных запятой, например:
S:='Gabarity=10,40,2,5'
Спасибо.
Отправлен: 04.06.2005, 15:14
Вопрос задал: Мурник Роман (статус: 1-ый класс)
Всего ответов отправлено: 5

Отвечает: Alex Diesel
Здравствуйте, Мурник Роман!
НАсколько понятно то формат строки: подстрока=параметр, тогда прочто просматриваешь символы в строке - те которые до знака "=" добавляешь в подстроку, потом после знака равно, если надо конвертировать параметры в числа, то смотришь строку ичешь запятые, символы между двумя знаками препенания, запоминаются в буферную переменную и конвертируются...
Ответ отправил: Alex Diesel (статус: 7-ой класс)
Отправлен: 04.06.2005, 15:33

Отвечает: Bochvarov NikB
Здравствуйте, Мурник Роман!
Твоя задача не очен определена, но посматри:
StrToList(var s: string): tStringList;
Result возвращает tStringList, где елемент [0] - параметър; [1],[2], ...,[Count-1] - Value параметра.

Приложение:

Ответ отправил: Bochvarov NikB (статус: 3-ий класс)
Отправлен: 04.06.2005, 16:04

Отвечает: sir henry
Здравствуйте, Мурник Роман!
Если это именно строка, то нет смысла писать название параметра, а запросить сразу параметры в вопросе, например:
WriteLn('Введите возраст:');
ReadLn(vozrast);
WriteLn('Введите габариты:');
ReadLn(gabarity.Len, gabarity.Width, gabarity.Heigth);
Тогда не надо будет отделять название параметра от самих параметров.
Это для консольного приложения, а для виндовозного приложения можно использовать StringGrid, где первый столбец - названия параметров ("Возраст", "Габариты" и т.д.), а следующие столбцы - параметры.
****************
Вполне возможно, что я Вам посоветовал что-то не то, но тогда подробнее опишите Вашу задачу. :)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 04.06.2005, 16:13

Отвечает: Denisss
Здравствуйте, Мурник Роман!
Надеюсь, мой пример Вам поможет (см. приложение)

Приложение:

Ответ отправил: Denisss (статус: 3-ий класс)
Отправлен: 04.06.2005, 16:26

Отвечает: Stamm
Здравствуйте, Мурник Роман!
Попробуй функцию pos('=',s). она возвращает вхождение = в строку и позицию = в строке, а далее считывать Copy(s,pos('=',s)+1,length(s))
Ответ отправил: Stamm (статус: 3-ий класс)
Отправлен: 05.06.2005, 22:15


Вопрос № 21.759
Привет всем!
Подскажите компоненты или модули для работы с MAPI.
Отправлен: 04.06.2005, 16:01
Вопрос задал: Ерёмин Андрей (статус: 5-ый класс)
Всего ответов отправлено: 2

Отвечает: streetcat
Здравствуйте, Master89!
а чем тебя компоненты Indy не устраивают.
Входят в стандартный состав Дельфи (где-то версии с 6), имеют удобный интерфейс для работы с многими протоколами и серверами Интернет.
Например, TidIMAP4 для работы с папками IMAP, TidNNTP (новости), TidPOP3 и TidSMTP (почта).

---------
WinERROR: Keyboard not detected. Press Enter to continue
Ответ отправил: streetcat (статус: 6-ой класс)
Отправлен: 04.06.2005, 20:49
Оценка за ответ: 3
Комментарий оценки:
Не в этом дело. С этими компонентами всё пучком. Нужен именно MAPI для работы с почтовыми программами.

Отвечает: sir henry
Здравствуйте, Master89!
Есть в стандартной поставке Дельфи такой модуль - называется mapi.pas.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 06.06.2005, 05:23
Оценка за ответ: 5


Вопрос № 21.760
Доброе вреям суток!!!
Сам программирую на дельфи и возникло 3 вопроса.
1. Как мне извлечь из ресурса файл? Не повредив. Как добавить знаю как мне его извель вот в чем вопрос :) Ресурс - EXE
2. Какой защитой мне защитить exe файл чтоб без пароля разархировать но антивири запутались?
3. Подкинте примерчик архиватора. простенького для реализации просто это вроде защиты будет :)
Отправлен: 04.06.2005, 16:06
Вопрос задал: Delphin (статус: 4-ый класс)
Всего ответов отправлено: 3

Отвечает: Denisss
Здравствуйте, Delphin!
1. Ниже пример: файл вытаскивается из собственных ресурсов (если я правильно Вас понял)
2. Защит полно: ASProtect, Yoda's Protector, Yoda's Cryptor (с исходниками), WinUpack, GHF Protector (с исходниками на Delphi, работает только под NT2kXP2k3), UPX (но его наверняка Антивири будут видеть) и др. (поищите в интернете - вы еще много платных и бесплатных шифровщиков найдете
3. ищите GHF Protector

Приложение:

Ответ отправил: Denisss (статус: 3-ий класс)
Отправлен: 04.06.2005, 16:44
Оценка за ответ: 5
Комментарий оценки:
Спасибо помогло.

Отвечает: John Freeman
Здравствуйте, Delphin!
1) По хорошему - TResourceStream , по плохому(WINAPI) - OpenResource*
2) ASProtect
3) современным антивирусам всё по фиг, а тебе лучше взять *zip в исходниках(их полно) и чуть модифицировать
---------
Время надирать задницы и жевать жвачку. Чёрт, но у меня кончилась жвачка!!!
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 04.06.2005, 20:39
Оценка за ответ: 3
Комментарий оценки:
1. За это 3 бала тебе. Пасиба.
2. 0 баллов это я и так знаю. Мне надо из своей проги....
3. Я пример просил.

Отвечает: CJ
Здравствуйте, Delphin!
См. В приложении. Там все очень хорошо описано, правда можно делать короче, но да ладно.

Приложение:

Ответ отправил: CJ (статус: Студент)
Отправлен: 06.06.2005, 10:36
Оценка за ответ: 5
Комментарий оценки:
Пасиба!!!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться
Вспомнить пароль

В избранное