Вопрос № 73550: Здраствуйте Уважаемые эксперты,
у меня появился еше один вопрос, как можно зделать чтобы размеры формы можно былобы изменять только до определенного размера, например чтобы ClientWidth моглобы принимать значения только до 530 и ClientHeight такж...Вопрос № 73560: Добрый вечер!Подскажите как проверить приходит что-то на Com- порт или нет.Скачал в Инете несколько программ на Делфи для работы и проверки Com -портов и ни одна ни чего не видит, а с прибора должны идти данные. По подробнее пожалуйста
объясните. ...Вопрос № 73585: Здраствуйте, уважаемые эксперты!
Вопрос такой:
У меня на форме стоит TEdit и при открытии
формы в него загружается первая строчка указанного текста!
Как сделать чтобы загружалась вторая строка или
как сделать что бы программа иск...Вопрос № 73598: Здравствуйте!!!
Вопрос всё таки по winapi, но всётаки я думаю эксперты должны знать.
Да и обсуждалось, наверное не раз(и не два):
Нужно чтобы приложение не отображалось на панели задач. У Фленова в книге делфи глазами хакера это делалось ...Вопрос № 73629: Здравствуйте. Вопрос, скорее, по алгоритмам. Моя программа рекурсивно обходит папки на дисках и записывает имена папок и файлов в текстовый файл. Затем можно выполнить поиск файлов по имени или по части имени, имена выдаются в ListBox. Проблема в том...
Вопрос № 73.550
Здраствуйте Уважаемые эксперты,
у меня появился еше один вопрос, как можно зделать чтобы размеры формы можно былобы изменять только до определенного размера, например чтобы ClientWidth моглобы принимать значения только до 530 и ClientHeight также, и еще, как можно зделать чтобы при двоином нажатии на заголовок формы, форма не разворачивалась бы на весь экран, а просто ничего непроисходилобы.
Заранее Спасибо.
с уважением, Станислав.
Отправлен: 31.01.2007, 22:25
Вопрос задал: Станислав (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Gh0stik
Здравствуйте, Станислав!
Для того чтобы Ваша форма соответствовала Вашим требованиям необходимо настроить свойство Constraints в Диспетчере Объектов (Object Inspector) или написать соответствующий обработчик:
procedure TForm1.FormCreate(Sender: TObject);
begin
with Form1.Constraints do
begin
MaxHeight:=200; //максимальная высота формы (объекта)
MaxWidth:=200; //максимальная ширина формы (объекта)
MinHeight:=100; //минимальная высота формы (объекта)
MinWidth:=100; //минимальная ширина формы (объекта)
end;
end;
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 31.01.2007, 22:56 Оценка за ответ: 5 Комментарий оценки: Спасибо
Вопрос № 73.560
Добрый вечер!Подскажите как проверить приходит что-то на Com- порт или нет.Скачал в Инете несколько программ на Делфи для работы и проверки Com -портов и ни одна ни чего не видит, а с прибора должны идти данные. По подробнее пожалуйста объясните.
Подскажите как работать с ini файлами, запись числа из Edit в ini файл и чтение из него в Edit? Нужно для работы.
Отправлен: 31.01.2007, 22:54
Вопрос задал: SIR (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Павлов Сергей Сергеевич
Здравствуйте, SIR!
Вот код для сохранения:
Var a:textfile;
b:string;
begin
b:=Edit1.Text;
AssignFile(a,'1.ini');
Rewrite(a);
Writeln(a,b);
CloseFile(a);
End;
Для открытия:
var c:textfile;
d:string;
begin
If FileExist('1.ini') then
begin
AssignFile(c,'1.ini');
Reset(c);
Readln(c,d);
Edit1.Text:=d;
CloseFile(c);
end;
end;
Ответ отправил: Павлов Сергей Сергеевич (статус: 1-ый класс)
Ответ отправлен: 01.02.2007, 00:22 Оценка за ответ: 4 Комментарий оценки: Спасибо.Для общего развития пригодится.
Отвечает: Gladiator
Здравствуйте, SIR!
С предыдущим ответимшим я не согласен. То, что он привёл, используется для работы с текстовыми файлами. Для использования в своей программе ini-файлов имеется библиотека IniFiles.
Пример работы:
uses ..., IniFiles;
procedure <Запись в ini-файл>;
var IniPath: string;
begin
IniPath:=ExtractFilePath(Application.ExeName)+'program.ini');
Ini:=TIniFile.Create(IniPath);
try
Count:=10;
Ini.WriteInteger('Settings','Count',Count);
for i:=1 to Count do
begin
Ini.WriteString('Settings',IntToStr(i),'Poperties №'+IntToStr(i));
end;
finally
Ini.Free;
end;
end;
procedure <Чтение из ini-файла>;
var Count: integer;
i: cardinal;
S: string;
IniPath: string;
begin
IniPath:=ExtractFilePath(Application.ExeName)+'program.ini');
Ini:=TIniFile.Create(IniPath);
if not FileExists(IniPath) then
begin
FileCreate(IniPath);
Ini.Free;
Exit;
end;
Count:=Ini.ReadInteger('Settings','Count',0);
if Count = 0 then
begin
Ini.Free;
Exit;
end;
for i:=1 to Count do
begin
S:=Ini.ReadString('Settings',IntToStr(i),'');
if Length(S)=0 then Continue;
Memo1.Lines.Add(S)
end;
Ini.Free;
end;
Вот и всё.
Ответ отправил: Gladiator (статус: 7-ой класс)
Ответ отправлен: 02.02.2007, 08:21 Оценка за ответ: 5 Комментарий оценки: Огромное СПАСИБО! Помогли здорово.
Вопрос № 73.585
Здраствуйте, уважаемые эксперты!
Вопрос такой:
У меня на форме стоит TEdit и при открытии
формы в него загружается первая строчка указанного текста!
Как сделать чтобы загружалась вторая строка или
как сделать что бы программа искала автоматически нужную строку
Например IP=192.168.0.2 при помощи слов IP
Вот как у меня сделана загрузка:
Отвечает: Argyn.Durmagambetov
Здравствуйте, Павлов Сергей Сергеевич!
вы с INI файлами совсем не правильно работаете
для них в Delphi есть специальный класс TIniFile находится в модуле IniFiles
код примера в приложении
Приложение:
--------- Не говори мне СДЕЛАЙ и я не скажу куда тебе идти...спроси "Как сделать" и получишь ответ
Ответ отправил: Argyn.Durmagambetov (статус: 2-ой класс)
Ответ отправлен: 01.02.2007, 07:00 Оценка за ответ: 5 Комментарий оценки: СПСБ Большое! То что надо!
Отвечает: sir henry
Здравствуйте, Павлов Сергей Сергеевич!
Если Ваш INI-файл это обычный неструктурированый текстовый файл, то прочитать только вторую строчку можно добавлением второй команды ReadLN(a, b).
Если нужно организовать поиск конкретного значения, то придется делать цикл:
Var
i, p: integer;
Begin
...
p=0;
While (not Eof(a)) or (p=0) Do
Begin
ReadLn(a,b);
p:=Pos('IP=192.168.0.2', b);
End;
...
End;
Если же Ваш файл это правильный INI-файл, то работайте с ним как советовал предыдущий эксперт, это будет проще. Только надо предварительно его структуру хорошо продумать.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 01.02.2007, 08:32
Отвечает: Arvist
Здравствуйте, Павлов Сергей Сергеевич!
Присоединяюсь к мнению экспертов, но хочу добавить пару комментов:
1. У методов TIniFile.ReadXXX третьим аргументом устанавливается значение возвращаемое по умолчанию, т.е. если не удалось получить доступ к необходимому ключу ini-файла
2. Для записи в ini файлы используется метод WriteXXX(Секция, ключ, записываемое значение)
3. Если ini файл находиться в директории программы то лучше к нему обращаться указывая полный путь, то есть вместо AppIni := TIniFile.Create('app.ini') нужно применять AppIni := TIniFile.Create(extractfilepath(paramstr(0))+'app.ini')) это немного увеличит скорость работы с ini файлами, так как иначе программа будет сначала искать ини-файл в системных директориях и только потом в директории программы.
4. При установленных значениях по умолчанию нет необходимости использовать блок try finaly end, что также увеличить скорость работы с ини-файлами.
--------- В будущем определено одно - неопределенность будущего!
Ответ отправил: Arvist (статус: 3-ий класс)
Ответ отправлен: 01.02.2007, 09:04
Отвечает: Bouffon
Здравствуйте, Павлов Сергей Сергеевич!
при использовании readln указатель перемещаеться на следуущую строку, так что ее ты можешь
загрузить если напишешь еще раз readln (это можнро использовать в цикле). для поиска н
091;жной строки делаешь цикл от while (not (eof(s))) or (pos(a,s)<>0), s - текстовый или другой файл. потом с помощью функции
pos(a,s) (поиск подстроки в строке) a - подстрока (например 'IP='), s - файл твой...
она (функция)видает число - номер подстроки в строке если она найденна или 0 если нет.. а дальше
делай проверку - найдена строка или нет. вот тебе извесен номер строки (счетч
ик внутри цикла) которая тебе нужна.
Ответ отправил: Bouffon (статус: 2-ой класс)
Ответ отправлен: 01.02.2007, 21:17
Вопрос № 73.598
Здравствуйте!!!
Вопрос всё таки по winapi, но всётаки я думаю эксперты должны знать.
Да и обсуждалось, наверное не раз(и не два):
Нужно чтобы приложение не отображалось на панели задач. У Фленова в книге делфи глазами хакера это делалось следующим образом:
Если создать проект делфи и написать эти строчки, то, да, работает как надо. Но приложение написано на API компаненты создаются во время выполнения. И строчка Application.hadle не нравится компилятору(он ессно не знает что это такое).
Как быть? очень надо чтобы наши юзеры не знали про приложение.
Отправлен: 01.02.2007, 09:34
Вопрос задал: Prowler (статус: 6-ой класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Павлов Сергей Сергеевич
Здравствуйте, Prowler!
попробуй записать так
Application.Initialize;
ShowWindow(Application.Handle,SW_Hide);
Form1:=TForm1.Create(nil);
Application.Run;
У меня работает прекрассно!
Ответ отправил: Павлов Сергей Сергеевич (статус: 1-ый класс)
Ответ отправлен: 01.02.2007, 10:14 Оценка за ответ: 4 Комментарий оценки: Читайте внимательно вопрос. У меня uses только те модули которые необходмы для создания простого виндового приложения: windows, messages, sysutils. Такие типы как application там не опрделены. А если подключать модуль form то размер увеличиться, кхе... раз в сто - мне этого не надо. Просто жалко плохую оценку ставить.
Вопрос № 73.629
Здравствуйте. Вопрос, скорее, по алгоритмам. Моя программа рекурсивно обходит папки на дисках и записывает имена папок и файлов в текстовый файл. Затем можно выполнить поиск файлов по имени или по части имени, имена выдаются в ListBox. Проблема в том, что, если я ввожу для поиска, допустим, "Windows", то в ListBox получаю:
C:\Windows
C:\windows\файл1
C:\windows\файл2
...
Как избежать повторений имен папок?
С уважением,
Михаил.
Приложение:
Отправлен: 01.02.2007, 13:30
Вопрос задал: Михаил73 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: PaVeL_Ekt
Здравствуйте, Михаил73!
Я бы посоветовал Вам на стадии поиска в рекурсивную функцию добавить следующий код:
writeln(f, Path);
// нацало цикла поиска файлов
writeln(f, ExtractFileName(FileName);
// конец цикла поиска
Функция ExtractFileName возвращает имя файла без пути.
теоретически при выводе тоже можно воспользоваться этой функцией
var sstr,fstr:string;
f:textfile;
begin
sstr:=edit1.Text;
if sstr='' then exit;
assignfile(f,'C:filelist.txt');
reset(f);
ListBox1.Clear;
while not eof(f) do begin
readln(f,fstr);
if fileexists(fstr) then begin// Проверяем на наличие файла
if AnsiContainsText(ExtractFileName(fstr),sstr) then
ListBox1.Items.Add(ExtractFileName(fstr));
end else begin
if dirExists(fstr) then // возможно directoryExists, точно не помню. если директория то выводим полный путь.
if AnsiContainsText(fstr,sstr) then
ListBox1.Items.Add(fstr);
end;
end;
closefile(f);
--------- Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: Студент)
Ответ отправлен: 01.02.2007, 14:47