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

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

Автор: ShIvADeSt
Дата сообщения: 26.04.2009 13:45
Frodo_Torbins
Судя по всему он путает {APPTYPE CONSOLE} и обычное безоконное приложение. У чисто консольного нет таймера, а у безоконного - можно сделать while GetMessage и в принципе таймер будет работать (у меня работало ).
Автор: Frodo_Torbins
Дата сообщения: 26.04.2009 13:48
ShIvADeSt
По моему в консольном тоже можно сделать петлю. По крайней мере я видел несколько прог, которые имели консоль, но при этом показывали окошки, когда надо. Вот если под дос приложение, то там понятное дело без окон надо обходится.
Автор: Aleksandr_N
Дата сообщения: 26.04.2009 14:16
Frodo_Torbins
Вообще-то да. Я имел в виду не чистое консольное приложение. А таймер я встроил в модуль, который имеет Control. А уж модуль использовался в DPR файле. Мне просто нужен был принцип.
Автор: Kursist
Дата сообщения: 27.04.2009 23:09
Aleksandr_N
Заранее извиняюсь за возможную рекламу (Если кто ее таковой сочтет).
Есть книга "Дельфи Советы программистов" 2004 год. Санкт-Петербург. Там на странице 864 есть пример, правда ооочень большой листинг (на 5 страницах). Называется - Индикатор хода выполнения в консольном приложении. Как раз это и есть таймер в консольном приложении. В uses только SysUtils,Windows.
В кратце там используются команды работы со временем Now, EncodeTime, FormatDateTime...
Автор: delover
Дата сообщения: 28.04.2009 09:42
Извините, я призадумался.

Код:
procedure Sleep(milliseconds: Extended);
begin
SysUtils.Sleep(Round(milliseconds));
end;
Автор: Aleksandr_N
Дата сообщения: 28.04.2009 11:11
И ещё небольшой вопрос
Как после открытия проводника выделить нужный мне файл?
Автор: anfilat
Дата сообщения: 28.04.2009 11:59
Aleksandr_N
ShellExecute(hWnd, '', 'explorer', '/select,"' + fn + '"', '', SW_SHOWNORMAL);
fn - полное имя файла
Автор: Aleksandr_N
Дата сообщения: 28.04.2009 12:16
anfilat
Спасибо, про

Цитата:
/select

я совсем забыл.
Автор: tatuich
Дата сообщения: 28.04.2009 16:45
Помогите решить проблему с Delphi 2009. В ней почему-то отвалился Tab. Перестал работать в SynEdit. Также пробовал в стандартном Memo - тоже не катит. В Delphi 2007 все работало.

Сам ловил Tab вручную, но в KeyDown он не ловится, а ловится только в KeyUp. Это не то, что я хотел. При зажатой клавише табуляция не повторяется, а происходит только при отпускании клавиши. Это не совсем то, потому что во первых визуально это выглядит как затормаживание программы, а во вторых хотелось бы так как это было раньше.
Автор: delover
Дата сообщения: 28.04.2009 20:11
Aleksandr_N
В Фаре
F2 Проводник explorer /e, "!\"\, /select, "!.!"
Это для Висты, в XP помоему без косой.
Автор: delover
Дата сообщения: 30.04.2009 22:05
tatuich
А как ты на другие контролы переходишь? У меня уже больше пяти лет Ctrl+Tab для едита, ну и понятно, что это не диалоговая комбинация... А KeyDown самому не трудно ловить. Да и всё же в исходниках...
Автор: delover
Дата сообщения: 01.05.2009 13:48
MAD коллекшен попал в трояны, чё-то не так
Автор: tatuich
Дата сообщения: 01.05.2009 15:44

Цитата:
tatuich
А как ты на другие контролы переходишь? У меня уже больше пяти лет Ctrl+Tab для едита, ну и понятно, что это не диалоговая комбинация... А KeyDown самому не трудно ловить. Да и всё же в исходниках...

Ну в Delphi 2007 в SynEdit ловилась Tab\Shift+Tab и работала. А в Delphi 2009 почему-то уже нет.


Цитата:
А KeyDown самому не трудно ловить.

В KeyUp ставлю код:

Код: if Key = VK_TAB
then Showmessage('up');
Автор: delover
Дата сообщения: 03.05.2009 08:06
tatuich
Забей на систему. Нынче, нужно обеспечить, чтобы юзер контрол добрался до контрол. Есть такая система - MDI. Тут ничего уже не поделать. Нажатия клавишь транслируются в системные команды. Но... Тебе мой снифер дать? Можно хоть пороли скачивать. А как систему призвать к ответу - я не знаю.

Добавлено:
tatuich
У меня нет лицензионного 2009 извини...
Автор: Maks150988
Дата сообщения: 03.05.2009 20:11
Товарищи, такое дело. Имеем шестнадцатеричное значение, ну например $0D. Как его отобразить как строку? Глаза разбегаются от обилия функций, всякие HexTo*, BinTo, а все не то. Я запутался. Какую можете посоветовать или может надо "напильником подработать" стандартную?
Автор: Frodo_Torbins
Дата сообщения: 03.05.2009 20:33
Maks150988
А в каком оно формате? Если integer, то так:

Код: Memo1.Lines.Add('$'+IntToHex(int, 2));
Автор: Maks150988
Дата сообщения: 03.05.2009 21:33
Frodo_Torbins
Да, спасибо, оно самое.
Автор: boruss
Дата сообщения: 04.05.2009 01:36
Привет всем. Такой вопрос. Нужен dblookupcombobox у которого при наведении на любой пункт списка будет высвечиваться многострочная подсказка для сокращения длины объекта.
Автор: AndreyAgrh
Дата сообщения: 04.05.2009 07:29
with ProductsGridView1.DataController do
begin
// Добавляю новую запись.
RecordCount := RecordCount + 1;
SetValue(RecordCount-1,1,Bcode);
SetValue(RecordCount-1,2,Desc);
SetValue(RecordCount-1,3,GridPosition);
SetValue(RecordCount-1,4,Id);
// Хочу позиционироваться на ней
FocusedRecordIndex := RecordCount - 1; // Исходя из девовского хелпа, это должно работать!!!
//ProductsGridView1.ViewData.Records[RecordCount - 1].Selected := True;
end;

В рез-те кода выделенной становиться не добавленная запись, а предыдущая. На закоментированной строке просто вываливается ошибка (Project Project1.exe raised exception class EListError with message 'List index out of bounds (0)'.).
Подскажите, где я что делаю не так?
Автор: fcdobpiy
Дата сообщения: 04.05.2009 07:45
вопрос про потоки.
одним из ключевых моментов использования потоков это синхронизация доступа к объктам. Synchronize надо использовать когда то к чему обращаешься может быть использовано другими.
а вот такая ситуация

есть unit1 и есть datamodule1 с dataset1
в unit1 объявлен поток, который работает с dataset1. кроме этого потока явно никто не обращается к dataset1.
Могу ли я работать из потока с dataset1 без всяких Synchronize и других ухищрений? Т.е. обращаться к datamodule1.dataset1... ?

реализовал это, все работает. но вот вдруг что не так?
Автор: f3ka
Дата сообщения: 04.05.2009 08:33
fcdobpiy
можно работать так... Synchronize используется чаще всего для обращение к объектам VCL, а не к объектам которые могут использоваться другими потоками... если нужно из другого потока обратиться к одному объекту то используют чаще всего критические секции
Автор: Frodo_Torbins
Дата сообщения: 04.05.2009 09:53
fcdobpiy

Цитата:
Могу ли я работать из потока с dataset1 без всяких Synchronize и других ухищрений? Т.е. обращаться к datamodule1.dataset1... ?

Только если вы уверенны, что сам датасет не обратится ни к каким други обьектам, например Application, Screen...
Автор: f3ka
Дата сообщения: 04.05.2009 10:08
Frodo_Torbins
то есть вы утверждаете, что если датасет прицеплен к гриду какому-либо, и начать в потоке двигаться по датасету, то будут AV из-за отрисовки движения в гриде?
Автор: Frodo_Torbins
Дата сообщения: 04.05.2009 10:52
f3ka
Скорее всего да, но довольно редко.
Автор: fcdobpiy
Дата сообщения: 04.05.2009 11:06
f3ka
Frodo_Torbins
спасибо.


Цитата:
что если датасет прицеплен к гриду

в этом случае согласен, могут появится проблемы. у меня же проще ситуация, с dataset работает только поток
Автор: SerGap
Дата сообщения: 05.05.2009 21:59
В Вин7 и Висте помоему, папки находящиеся в Program Files по умолчанию не разрешают производить изменение/удаление файлов находящихся в них. Может быть кто-нибудь знает как разрешить эту проблему программно ? Уточню - речь о том что мы в ручную можем задать в свойствах папки/файла на вкладке "Безопасность".
Или может у кого есть ссылки на подобные решения, буду благодарен.
Автор: afiget
Дата сообщения: 05.05.2009 23:32
SerGap
http://sql.ru/forum/actualthread.aspx?tid=660459&pg=-1
Автор: Frodo_Torbins
Дата сообщения: 06.05.2009 10:40
SerGap
Может лучше располагать такие файлы там, где им и место - в "\Users\*\AppData\Roaming"?
Автор: SerGap
Дата сообщения: 06.05.2009 17:32
afiget
Спасибо, почитаю.
Frodo_Torbins
Надо подумать, все-таки это не просто файлы, а папка с моей программой. Т.е. написан простенький инсталлятор, который создает папку в Program Files, помещает туда нужные файлы. А при работе программа не может с ними работать. Все-таки удобнее некоторые файлы иметь в папке с программой и иметь к ним доступ, а так пока что получается что в папке может находится только exe-шник.
Автор: Frodo_Torbins
Дата сообщения: 06.05.2009 18:34
SerGap
А какая вам разница, где находятся файлы? Ведь вы же всеравно используете чтото наподобие GetWorkDir: String, и все модификации коснутся только этой функции. Единственный аргумент за - это портабл софт, но такие случаи почти всегда надо предусматиривать отдельно. А вот аргументов против полно, начиная от затруднения администрирования, и заканчивая пособничеством вирусописателям. Последний аргумент конечно звучит немного высокопарно, но это так - большинство вирусов не запускается под обычным пользователем. Поэтому заставляя юзера сидеть под админом, вы фактически помогаете вирмейкерам.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Глобальные переменные в разных формах с++ builder 'a.


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