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

» Вопросы по Delphi

Автор: Dim2004
Дата сообщения: 18.08.2005 17:52
Sky_Drake

Цитата:
2)можно ли как-то уменьшить размер конечного exe-файла?

Тынц.


Цитата:
при использовании ассемблерных комманд чтения/записи в порт - in/out выскакивает ошибка Priveleged instruction

Логично. Все нормальные операционки прямой доступ к железу из пользовательских программ запрещают. Приятно, что и Винда движется в том же направлении .
Автор: MICROPOM
Дата сообщения: 19.08.2005 09:32
Помогите, научите. ShellExecute(Handle,'explore', 'E:\',nil,nil,SW_RESTORE);
Как можно букву сидирома возвратить, если он ни Е:\?
Автор: SergeBS
Дата сообщения: 19.08.2005 10:46
Sky_Drake

Цитата:
подсоединил вместо джойстика переменные резисторы и написал программку, которая изменяет громкость звука в соответствии с положением резистора - получился вполне удачный регулятор громкости

Есть куча звуковух,в которых на плате разъем с 4 лапами - для 3 кнопок
"Тише","Громче", "Вкл-выкл (Mute)". Посмотри, может зря старался .


Цитата:
при использовании ассемблерных комманд чтения/записи в порт - in/out выскакивает ошибка Priveleged instruction (как в Delphi так и в VC++) можно ли как-то получить привелегии на использование этих комманд,

Куча разных библиотек позволяет обращаться под любой Win к портам ввода-вывода, памяти и т.п. Например WinIo. Или ройся в MSDN - для джойстика так и набери joystick. Там и примеры на C++ есть - DirectX.
Или вот:

Как использовать Joystick
--------------------------------------------------------------------------------
Автор: http://www.swissdelphicenter.ch
uses
MMSYSTEM;
var
MyJoy: TJoyInfo;
ErrorResult: MMRESULT;
begin
ErrorResult := joyGetPos(joystickid1, @MyJoy);
if ErrorResult = JOYERR_NOERROR then
begin
TrackBar1.Position := MyJoy.wypos;
TrackBar2.Position := MyJoy.wxpos;
RadioButton1.Checked := (MyJoy.wbuttons and joy_button1) > 0;
RadioButton2.Checked := (MyJoy.wbuttons and joy_button2) > 0;
end
else
case ErrorResult of
MMSYSERR_NODRIVER: ShowMessage('No Joystick driver present');
MMSYSERR_INVALPARAM: ShowMessage('Invalid Joystick Paramameters');
JOYERR_UNPLUGGED: ShowMessage('Joystick is Unplugged');
else
ShowMessage('Unknown error with Joystick');
end;
end;
Проект Delphi World © Выпуск 2002 - 2004

Автор: Dim2004
Дата сообщения: 19.08.2005 10:46
MICROPOM

Цитата:
Как можно букву сидирома возвратить

Перебирать с помощью GetDriveType() с 'C:\' по 'Z:\'. Тебя интересует DRIVE_CDROM (не забывай, что он может быть не один ). По-моему, был пример в демках...
Автор: MICROPOM
Дата сообщения: 19.08.2005 12:02
Dim2004
Слушай, а поточнее можеш написать? Как это написать?
Я просто в танке)
Автор: SergeBS
Дата сообщения: 19.08.2005 12:18
MICROPOM
Не туда роешь.
procedure TForm1.Button1Click(Sender: TObject);
var
w: dword;
Root: string;
i: integer;
begin
w := GetLogicalDrives;
Root := '#:\';
for i := 0 to 25 do
begin
Root[1] := Char(Ord('A') + i);
if (W and (1 shl i)) > 0 then
if GetDriveType(Pchar(Root)) = DRIVE_CDROM then
Form1.Label1.Caption := Root;
end;
end;
Проект Delphi World © Выпуск 2002 - 2004
Автор: MICROPOM
Дата сообщения: 19.08.2005 13:34
SergeBS
Спасибо! всё заработало. Только открываются все Цдромы.

Добавлено:
Но всё равно, большое спасибо!!! Это я сам сделаю.
Автор: 2Polkan
Дата сообщения: 20.08.2005 17:48
Проблема такая.

Имеется комплнент SpinEdit (это тот, который с выбором цифры).
При его редактирвоании происходит примерно следующее (вкратце написал):

procedure TMainForm.SpinEditChange(Sender: TObject);
begin
if SpinEdit.Text = '' then SpinEdit.Value := 0;
Label.Caption := IntToStr(SpinEdit);
end;

Но если при работе нажать Delete в СпинЭдите, возникает проблема: ругается, что '' (пустая строка) не является целым числом :(.

Вроде сделал проверку, что если оно равно '' то оно становится равынм нулю...

Добавлено:
Проблему почти решил, но... если двойным щелчком выделить число и нажать любую цифру, н-р, 1, будет не 1 а 10... Странно.

Для примера предлагаю небольшой проект, который десонстрирует эту ошибку :)
http://www.webfile.ru/470646
Автор: Larry
Дата сообщения: 21.08.2005 10:16
Есть строка (около 90 символов).

Нужно произвольно перемешать символы в строке. Делаю следующее:

var
i, a, b: integer;
s: string;
a1, b1: char;
begin
for i:=0 to 50 do begin
a:=Random(Length(s)+1);
a1:=s[a];
b:=Random(Length(s)+1);
b1:=s[b];
s[a]:=b1;
s[b]:=a1;
end;


При запуске цикла в строках, выделенных жирным шрифтом возникает ошибка обращения к памяти. Если сделать цикл, например, от 0 до 10, то все проходит нормально. :\

Подскажите, пожалуйста, в чем проблема.
Автор: 2Polkan
Дата сообщения: 21.08.2005 10:44
Larry
а рэндом разве не недо "обработать", вроде он дробные числа генерирует...
Автор: Larry
Дата сообщения: 21.08.2005 10:54
2Polkan,

Цитата:
вроде он дробные числа генерирует...

Разве?
Автор: 2Polkan
Дата сообщения: 21.08.2005 12:20
Блин, с бэйсиком перепутал :).
Автор: Dim2004
Дата сообщения: 22.08.2005 12:14
Larry

Цитата:
Подскажите, пожалуйста, в чем проблема.

В нежелании 5 минут подумать. Random(Length(s)+1) имеет право выдать 0, и он его выдаёт на первом же обращении. Потом ты записываешь какую-то муть в s[0]... результат на лице. Следует написать Random(Length(s)) + 1.
Автор: ShIvADeSt
Дата сообщения: 23.08.2005 00:50
Dim2004

Цитата:
В нежелании 5 минут подумать. Random(Length(s)+1) имеет право выдать 0, и он его выдаёт на первом же обращении. Потом ты записываешь какую-то муть в s[0]... результат на лице. Следует написать Random(Length(s)) + 1.

Ты перед первым вызовом Random напиши Randomize, и потом считай как часто у тебя вначале нули будут выпадать. А вот что конкретно ты хотел я не понял. s[0] какую муть ты сюда писал? Здесь хранится длина строки s и борланд туда не рекомендует ничего писать (по крайней мере в Паскале так было).
Автор: Dim2004
Дата сообщения: 23.08.2005 19:45
ShIvADeSt

Цитата:
Ты перед первым вызовом Random напиши Randomize, и потом считай как часто у тебя вначале нули будут выпадать.

Ну, это не ко мне, я просто объясняю тов. Larry, почему у него AV лезут. Кроме того, даже с Randomize вероятность выпадения 0 равной нулю не становится.


Цитата:
s[0] какую муть ты сюда писал?

Я? Никакую . А вот код от тов. Larry

[code]a:=Random(Length(s)+1);
s[a]:=b1;[code]

очень даже запросто запишет, если a=0.
Автор: Larry
Дата сообщения: 23.08.2005 19:53
Dim2004, спасибо. Действительно, сглючил я. По поводу

Цитата:
Ты перед первым вызовом Random напиши Randomize, и потом считай как часто у тебя вначале нули будут выпадать.

Я привел только фрагмент кода. У меня перед вызовом стоял Randomize, но нолики, как видно, попадались частенько.
Автор: ShIvADeSt
Дата сообщения: 24.08.2005 01:01
Dim2004

Цитата:
Ну, это не ко мне, я просто объясняю тов. Larry, почему у него AV лезут. Кроме того, даже с Randomize вероятность выпадения 0 равной нулю не становится.

Я и не утверждал, что вероятность станет равной нулю Я все таки немного Паскаль знаю .

Код:
a:=Random(Length(s)+1);
s[a]:=b1;
Автор: VitaliM
Дата сообщения: 24.08.2005 01:18
Может я чего не понял, но если вместо

Код: a:=Random(Length(s)+1);
Автор: ShIvADeSt
Дата сообщения: 24.08.2005 02:40
VitaliM

Цитата:
a:=Random(Length(s)-1)+1;
то и нуля не будет и за пределы строки не выскочишь.
Если я все же чего не понял, то не пинайте сильно.

И никогда не получишь последний символ (просто надо читать хелпы хоть иногда)
random(x) возвращает число от 0 до х-1 включительно. Поэтому согласно этому максимально возвращаемый результат a:=Random(Length(s)-1)+1 будет равен length(s)-1
Автор: crash_rider
Дата сообщения: 24.08.2005 04:21
Всем привет! я тут не давно, но вопросик возник тут !
Есть 5 форм! их нужно сделать (все 5 форм) поверх всех окон!
пробывал и API средствами и Delphi не фига!
Если делать 1 форму поверх, то все работает если делаеш 5 то.....
При запуске все работает все 5 фйорм на верху, но стоит только хоть одну форму переместить по экрану все кранты
Уже бьюсь над этим вопросм 4 мес
Автор: GloThin
Дата сообщения: 24.08.2005 05:05

Цитата:
При запуске все работает все 5 фйорм на верху, но стоит только хоть одну форму переместить по экрану все кранты

То есть, формы перестают быть "поверх всех окон"? А та, которую перемещаешь?

Добавлено:
И для каких целей обязательно выводить 5 форм поверх всех?
Автор: XDefender
Дата сообщения: 24.08.2005 14:54
DevExpress - cxHintStyleController...

Уже задолбался...
В общем мне нужно кроме подсказки, которая выводится выводить Caption, при том что Caption мне в програме нужно менять.
Как поставить настройки для вывода Caption я знаю, а вот как програмно менять Caption - не знаю.

Уже задолбался..... 4 часа убил на это.. и все бестолку...
Сторонние компоненты брать не хочется и менять сорсы Девок также.

ПОМОГИТЕ!!!!!
Автор: crash_rider
Дата сообщения: 25.08.2005 01:23
ДА ты абсолютно прав! перестают быть поверх всех окон! уже задрался!

SetWindowPos(Handle1, HWND_TOPMOST, Left, Top, Width, Height, 0);
SetWindowPos(Handle2, HWND_TOPMOST, Left, Top, Width, Height, 0);
SetWindowPos(Handle3, HWND_TOPMOST, Left, Top, Width, Height, 0);
SetWindowPos(Handle4, HWND_TOPMOST, Left, Top, Width, Height, 0);
SetWindowPos(Handle5, HWND_TOPMOST, Left, Top, Width, Height, 0);

не прокатывает с 5, а с 1 формой все ок!
Прога рисует графики по 1-закону Кирхгоффа а потом их складывает для препода пишу...
Ну и для таких же как я студней, чтобы жизнь студентов облегчала нелегкую
Так на кальке приходиться рисовать , а так на компе все построил и распечатал :-D
Автор: GloThin
Дата сообщения: 25.08.2005 07:15
XDefender

Цитата:
DevExpress - cxHintStyleController...

Уже задолбался...
В общем мне нужно кроме подсказки, которая выводится выводить Caption, при том что Caption мне в програме нужно менять.

Caption от чего? От cxHintStyleControllerа?
Автор: ShIvADeSt
Дата сообщения: 25.08.2005 07:28
crash_rider

Цитата:
не прокатывает с 5, а с 1 формой все ок!

Надо просто правила винды знать, что не бывает более одного топмоста. Следующее будет перекрывать предыдущее. А зачем тебе 5 топмостов? Бери и так распечатывай. Нарисуй их на форме да печатай. Смысла не вижу их топмост делать.
Автор: AlphaBet
Дата сообщения: 25.08.2005 16:25
Проблема с работой DevExpress Quantum Grid v.5.8 (последняя).
Проблема такая, когда я создаю просмотр типа DBCharts и запускаю прогу, то вылазит ошибка в файле cxGridChartView:
TcxGridChartController = class(TcxCustomGridController)
private
function GetGridView: TcxGridChartView;
protected
function GetDesignHitTest(AHitTest: TcxCustomGridHitTest): Boolean; override;
function GetPatternObject(AObject: TPersistent): TPersistent; override;
public
function GetValueHintText(ASeries: TcxGridChartSeries; AValueIndex: Integer): string; virtual;
property GridView: TcxGridChartView read GetGridView;
end;
А в частности на GetPatternObject говорит [Error] cxGridChartView.pas(173): Method 'GetPatternObject' not found in base class
Если убрать просмотр то прога компилируется. Ставил компоненты из исходников, может я не так установил? Может у кого то такая проблема была? что делать? поможите пожалуйста ...
Автор: GloThin
Дата сообщения: 25.08.2005 21:18

Цитата:
А зачем тебе 5 топмостов? Бери и так распечатывай. Нарисуй их на форме да печатай. Смысла не вижу их топмост делать.

Это точно! Еще можно сделать, если человеку так уж хочется 5 форм одновременно создать MDI-формы...
Автор: ShIvADeSt
Дата сообщения: 26.08.2005 00:53
GloThin

Цитата:
Это точно! Еще можно сделать, если человеку так уж хочется 5 форм одновременно создать MDI-формы...

Да суть не в том, какого типа окна делать хоть МДИ хоть СДИ, вопрос зачем именно топмост. Если для разового решения задачи (а я именно так понял условие задачи) то проще добавить механизм сворачивания всех десктоповых окон а потом вынос своих как душе угодно, если же многоразово, то все равно можно использовать тот же механизм, либо делать одно рабочее окно топмост, а потом от него делать потомков, располагая их на нем, причем потомки всегда будут модальны по отношению к нему, поэтому будут его перекрывать (вроде так )сам такими извращениями (на мой взгляд) не занимался. Я вообще против выноса некоторых приложений на передний край, хотя авторы считают, что это важно (причем в опциях нет отрубания этой возможности).
Автор: crash_rider
Дата сообщения: 26.08.2005 05:23
Да нет! Ну представьте сидит студенть и тыкает куды попало переключает с окна на окно а так все чтоб 5 форм окна было видно ну типа так удобнее

Ну типа в плеере винампе то все окна поверх всех! как обойти правило винды? вот типа токого же и нужно для графиков! чтоб все перед глазами были

Думал про MDI но, тогда не много по другому все и надо переделывать.... переделывать не хотчса!
Бля ( не ругайся) графики съезжают во MDI она окно сама масштабирует и рамки к окну добавляет не катит....!
Разрешение рабочее 1280х1024 - 5 графиков влазиют
проще найти ответ блин все перерыл не где нет все форумы по дельфям....
Эх,а мож таймер поставить на проверку окна? конечно будет жрать ресурсы - 200 mmx комы
Короче тупик....мда...
Ну пробывал я создавать окно а потом 5 child- ов этого окна ну тоже самое...
Короче нужно обойти просто правило винды когда одно окно только с верху вот и все...


Добавлено:
т.е. как я понимаю прежде чем создать TOPMOST окно винда проверет нет ли таких окон и если есть она снимает атрибут TOPMOST и ставит его другому окну ? так или нет?
Автор: AlphaBet
Дата сообщения: 29.08.2005 15:53
посоветуйте какие компоненты лучше для работы с XML? Я начинающий

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Вероятность одинакового CRC32


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