Вопрос № 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 Комментарий оценки: Пасиба!!!