Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (все версии) - часть 3

Автор: greenpc
Дата сообщения: 04.03.2008 07:51
Maks150988
combo1.ItemIndex := combo1.Items.IndexOf(IniReadString(GetCurDir + 'Settings.ini', 'Options', 'TimeOut', #0))
на апи переведешь?
Автор: Mandor Sawall
Дата сообщения: 04.03.2008 09:57
Maks150988
Стоит попробовать две вещи:
1. Задать текст напрямо, а не через его индекс, через WM_SETTEXT (наверное, потом будеть нужно послать и CM_TEXTCHANGED).
2. Хранить в INI не стойности, а индекси; потом можно сразу отправлять в комбо через CB_SETCURSEL.
P.S. Когда говорю "наверное", или "стоит попробовать", ето означаеть, что ето только идеи и советы, а сам я не попробовал, так что вполне возможно, что я не прав.
Автор: Maks150988
Дата сообщения: 04.03.2008 10:45
Ммм... Попробовал так:

Код:
CheckBuffer := IniReadString(GetCurDir + 'Settings.ini', 'Options', 'TimeOut', #0);
IndCmbxFreq := SendMessage(GetDlgItem(hStg, CTRL_COMBOBOX_NETPREBUF), CB_FINDSTRING, -1, Integer(PChar(CheckBuffer)));
SendMessage(GetDlgItem(hStg, CTRL_COMBOBOX_NETPREBUF), CB_SETCURSEL, IndCmbxFreq, 0);
Автор: Mandor Sawall
Дата сообщения: 05.03.2008 09:08
Maks150988
По моему, ваш вариант лучше (все-таки перевели на API! )
Только не понимаю, почему не запоминаете куда-то handle елемента, а всякий раз пишете GetDlgItem(hStg, CTRL_COMBOBOX_NETPREBUF)!?
Автор: Maks150988
Дата сообщения: 05.03.2008 20:01
Mandor Sawall
Да как-то привычнее чтоли СендМессадж писать везде.
Автор: RAGod
Дата сообщения: 05.03.2008 21:01
Помогите плиз
Надо включить отключить соеденение "Минипорт WAN (PPPoE)"
использую ntset (шереваре)
отключает нормально по
NTFirewall1.Connections.Items[3].Disconnect;
а вот включать не хочет нивкакую пишет:

Project Project1.exe raised exception class EOleSysError with message 'He
пoддepживaeтcя'. Process stopped. Use Step or Run to continue.

с любым другим соеденением (локальная сеть, bluetooth ..) работает без проблем, а "Минипорт WAN (PPPoE)" не в какую не хочет

В чём может быть проблема?
Или есть какой нибудь другой способ включить отключить соеденение "Минипорт WAN (PPPoE)" используя что нибудь другое вместо ntset
Автор: Maks150988
Дата сообщения: 06.03.2008 08:42
Ммм еще вопросик есть. Наверняка многие видели (а может и делали) как во всяких эбаутах и прочее есть строка и вней выделено другим шрифтом какое-либо слово. Как так делается? Сабклассинг?
Автор: MrZeRo
Дата сообщения: 06.03.2008 09:43
Maks150988
Да как угодно это можно реализовать.
Самое простое - поставить в ряд несколько TLabel с разными шрифтами.
Автор: SergeBS
Дата сообщения: 06.03.2008 09:50
Никто не пробовал искать слово в PDF-документе? Как открыть его - знаю, смотреть - пожалуйста, а вот автоматически (из списка, например) искать слово и определять - найдено или нет - ну не получается. Должно что-то простое быть, а найти не могу.
Автор: Andrey128
Дата сообщения: 06.03.2008 14:00
Как вы руссифицируете свои приложения?
Раньше писал на Delphi 7, и использовал переводные модули (consts.pas и т.д.) бесплатно предоставленные Polaris Software. В приложениях, в которых нужен русский, я в Search Path указывал путь к русским ресурсам и все.
Сейчас перебрался на Delphi 2007, а переводных модулей нет. Что делать?
Автор: mauar
Дата сообщения: 06.03.2008 15:42
Есть PageControl у неё создана одна вкладка, как сделать чтобы создавалась копия этой открытой вкладки?
Автор: Frodo_Torbins
Дата сообщения: 06.03.2008 18:14
mauar
С помощью Assign?
Автор: Maks150988
Дата сообщения: 06.03.2008 19:08
MrZeRo
Дык вот хочется одним статиком обойтись. А как такое сделать - не знаю.
Andrey128
Ну я прописываю resourcestring и по аналогии как const делаю как нужно.
Либо если нужно точный номер строки своей указать, то через LoadString загружаю из ресурсов строку и в мессаджбоксе это выглядит как MessageBox(hWnd, PChar(String1), '', MB_OK).
Автор: Andrey128
Дата сообщения: 07.03.2008 04:59
Maks150988

Цитата:
Ну я прописываю resourcestring и по аналогии как const делаю как нужно.

Не совсем понял вас.
Например, если вызвать MessageDlg, то в заголовке будет писаться 'Confimation' или 'Information', а мне бы хотелось, чтобы 'Подтверждение' или 'Информация'.
Эти строки хранятся в файлах Consts.pas, DBConsts.pas и т.д.

Сравнил я основные ресурсы Consts.pas, DBConsts.pas и SysConsts.pas между Delphi 7 и 2007 - в основном добавлены новые строки. Основной перевод взял от Polaris Software, что добавили - оставил непереведенным (там не так много).
hxxp://rapidshare.com/files/97638019/Rus_Consts_D2007_b10471.rar.html

Чтобы это заработало, в опциях проекта нужно добавить путь в Search path.
Если для всех проектов, то в Tools | Options | Enviroment Options | Delphi Options | Library Win32.
Автор: Czechoslovak
Дата сообщения: 07.03.2008 09:10

Цитата:
Дык вот хочется одним статиком обойтись. А как такое сделать - не знаю.

Переписать самому прорисовку контрола и покаким либо признакам например менять стиль шрифта, возможно такие компоненты уже существуют...
в принципе можно использовать например RichEdit или RichView
Автор: Maks150988
Дата сообщения: 07.03.2008 17:00

Цитата:
Не совсем понял вас.
Например, если вызвать MessageDlg, то в заголовке будет писаться 'Confimation' или 'Information', а мне бы хотелось, чтобы 'Подтверждение' или 'Информация'.

Ну все тоже самое можно и через Мессаджбокс. А всякие Шоумессаджб и Мессадждлг как-то дублируют...
Например я делаю так:

Код:
resourcestring
IDC_STR_MSG_INF = 'Информация';
IDC_STR_MSG_ADD = 'Невозможно добавить новую запись в список. Пожалуйста проверьте заполнение всех полей.';
Автор: MsdLamer
Дата сообщения: 08.03.2008 18:44
Здравствуй. Вопросик, как открыть в МЕМО с последний созданный файл. Допустим в каталоге лежат файлы 1006.txt 10018.txt 1002.txt, как допусти файл созданый сегодня (1002.txt) открыть в МЕМО и не трогать другие. И еще если не сложно, напишите пожалуйста как можно скопировать так же из одной папки в другую последний созданный файл. Спасибо профессионалам.
Автор: Frodo_Torbins
Дата сообщения: 08.03.2008 22:11
MsdLamer
А какая разница какой файл? Пишете:

Код: Memo1.LoadFromFile('C:\Pyt\k\moemy\fajly\1002.txt');
Автор: waik
Дата сообщения: 09.03.2008 00:19
MsdLamer
Сейчас попробуем отгадать в чём вопрос был!

Frodo_Torbins
Мне кажется что проблема у MsdLamer именно в том чтобы найти этот "последний созданный файл" в директории где их много.

Думаю что тут поможет использование функции
function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;

ну и конечно FindClose/FindNext

Типа такого:
var
sr : TSearchRec;
fn : string; // TfileName наверное правильно, но вообще одно и тоже
MaxTime : integer; // конвертируется в TdateTime с помошью FileDateToDateTime(FileDate: Integer): TDateTime;


fn := '';
MaxTime := 0;

if FindFirst('c:\TMP\*.txt', faAnyFile , sr) = 0 then
begin
repeat
if sr.time>MaxTime then
begin
MaxTime := sr.time;
fn := sr.name;
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;

Memo1.LoadFromFile(fn);


ну или примерно так... Может кто и лучше подскажет.




Автор: MsdLamer
Дата сообщения: 09.03.2008 18:32
waik у меня почему то не работает, ошибку выдает... . поясняю вопрос, мне нужно открыть последний созданый файл (допустим сегодняшним числом) в МЕМО, в папке много текстовых файлов, но нужен именно последний . И так же скопировать последний созданый файл из одной папки в другую, если не сложно напишите исходники, я только учусь . Спасибо.
Автор: Sampron
Дата сообщения: 09.03.2008 18:55
Подскажите пожалуйста как можно запустить файл путь к которому записан в строчке реестра?
Автор: Frodo_Torbins
Дата сообщения: 09.03.2008 23:03
MsdLamer
Это же вам не батники писать. Говорите что за ошибка. waik писал на коленке, мог какую то мелочь пропустить.
Sampron
Где то так:

Код: uses ShellAPI;
...
//ChDir('C:\Pyt\k\moemy\fajly'); это розкоментировать если файл - экзешник
ShellExecute(0,'open','"C:\Pyt\k\moemy\fajly\MoiFail.ext"','','"C:\Pyt\k\moemy\fajly"',SW_NORMAL);
Автор: MsdLamer
Дата сообщения: 09.03.2008 23:43
Я кинул в папочку два файла 1001 созданый 3 марта, а один создал 1002 сегодня 9 марта, обо тхт.... Он пишет типа невозмодно открыть файл 1001 невозможно... Cannot open file 1001.txt.
Автор: RomanTim
Дата сообщения: 09.03.2008 23:50
Sampron
Ну и в дополнение к посту Frodo_Torbins, по поводу реестра смотри в сторону TRegistry. Что-то вопросы пошли - попробуй догадайся что человеку надо...


Добавлено:
MsdLamer
Memo1.LoadFromFile('c:\TMP\' + fn);
Автор: MsdLamer
Дата сообщения: 10.03.2008 00:26
Спасибо все открывается, еще вопросик могу ли я скопировать таким же образом??
CopyFile('c:\1\'+ fn, 'c:\2\', true); пишет ошибку Incompatible types: 'String' and 'PChar'. Что не так? Спасибо.
Автор: afiget
Дата сообщения: 10.03.2008 01:00
MsdLamer
F1 на CopyFile. Приведение типов.
Автор: Sampron
Дата сообщения: 10.03.2008 01:24
RomanTim

Цитата:
Ну и в дополнение к посту Frodo_Torbins, по поводу реестра смотри в сторону TRegistry. Что-то вопросы пошли - попробуй догадайся что человеку надо...

Нужно чтобы при нажатии на кнопку открывался ехе файл путь которого прописан в реестре к примеру в:
[HKEY_LOCAL_MACHINE\SOFTWARE\My Program]
"Path"="C:\Program Files\My Program\MyProg.exe" //строковый параметр

Автор: vidic777
Дата сообщения: 10.03.2008 04:04
MsdLamer

Цитата:
Incompatible types: 'String' and 'PChar'. Что не так? Спасибо.

afiget прав. Попробуйте так:

Код:
if (!CopyFile('c:\1\'+ fn.c_str(), 'c:\2\', false)) {
ShowMessage("Error Copying");
}
Автор: Jokerjar79
Дата сообщения: 10.03.2008 05:56
vidic777, это на С. На делви так:

Код: CopyFile('c:\1\'+ pchar(fn), 'c:\2\', true);
Автор: Frodo_Torbins
Дата сообщения: 10.03.2008 11:10
Эм, вобще вторым параметром должен быть полный путь + новое имя файла. Примерно так:

Код: CopyFile(PChar('C:\Pyt1\MoiFail1.ex1'), PChar('C:\Pyt2\MoiFail2.ex2'), False);

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: 1С: Конвертация данных 2.0


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.