Вопрос № 28807: Уважаемые эксперты!
Как програмно открыть соединение по умолчанию в Windows 2000, в папке Панель управления/Сеть и удаленный доступ к сети. В этой папке два вида соединений - подключение по локальной сети и диалап. Как запустить набор номера (диа...Вопрос № 28822: Здравствуйте уважаемые эксперты.
Такая проблема: при чтении нетипизированного файла процедурой BlockRead читать получается только из только что созданного (при
текущем сеансе работы программы) файла. Если же запустить программу и сразу попы...Вопрос № 28834: Доброго времени суток Ув. Эксперты!!!
Посмотрите пожалуйста на этот код в приложении и скажите что в нем не так потому что я намучился уже решая эту проблему.
Сейчас поясню мою проблему более подробно. Я делаю програмку и вней есть ...Вопрос № 28844: Всем привет!
Есть ли компоненты, позволяющие работать с игровым джойстиком? Если да, подскажите, пожалуйста, как называются и где скачать. Или примерчик работы с джойстиком... Заранее благодарю за ответ....
Вопрос № 28.807
Уважаемые эксперты!
Как програмно открыть соединение по умолчанию в Windows 2000, в папке Панель управления/Сеть и удаленный доступ к сети. В этой папке два вида соединений - подключение по локальной сети и диалап. Как запустить набор номера (диалап), т.е. просто открыть форму подключения?
Отправлен: 02.11.2005, 18:59
Вопрос задал: Yxo (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: sir henry
Здравствуйте, Yxo!
Просто открыть диалог набора номера можно программой rasphone.exe:
ShellExecute(0, 'open', 'rasphone.exe', '-d rol', NIL, SW_SHOW);
Здесь в параметрах:
-d - вызвать диалог подключения;
rol - название ярлыка диалапа для подключения (у меня подключение называется rol).
Если диалог не нужен, то есть консольная команда rasdial.exe. При этом сразу начинается набор номера,:
ShellExecute(0, 'open', 'rasdial.exe', 'rol', NIL, SW_SHOW);
Она сразу начинает набор номера, того, что записана в ярлыке. При этом, чтобы соединение было успешным, в ярлыке уже должны быть имя и пароль.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 02.11.2005, 20:17 Оценка за ответ: 5
Вопрос № 28.822
Здравствуйте уважаемые эксперты.
Такая проблема: при чтении нетипизированного файла процедурой BlockRead читать получается только из только что созданного (при
текущем сеансе работы программы) файла. Если же запустить программу и сразу попытаться прочитать из уже существующего
нетипизированного файла, то выходит ошибка. Подскажите что сделано не так.
Код примерно такой:
Отправлен: 03.11.2005, 08:01
Вопрос задал: Teapot (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Tsechoev Bagaudin
Здравствуйте, Teapot!
Задай переменные
buf,buf2: Array[0..255] of char;
а дальше можешь работать с ними как со строками.
Удачи!
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: Студент)
Отправлен: 03.11.2005, 08:39 Оценка за ответ: 5 Комментарий оценки: Очень благодарен!
Отвечает: sir henry
Здравствуйте, Teapot!
А ошибку кто за Вас писать будет?
Замените тип buf2 на array of char. Только не забудте память под него выделить.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 03.11.2005, 09:03 Оценка за ответ: 5 Комментарий оценки: Спасибо. Только зачем память нужно выделять, когда можно и без ее выделения обойтись я так и не понял.
Отвечает: Vitava
Здравствуйте, Teapot!
Может я ошибаюсь, но мне кажется, что чтение и запись в нетипизированный файл должно происходить одинаковыми частями. Тоесть, если Вы создали файл и записываете в него блоки по 10, то читать надо тоже блоки по 10.
Ответ отправил: Vitava (статус: 2-ой класс)
Отправлен: 03.11.2005, 10:04 Оценка за ответ: 4
Отвечает: Маренич Владимир
Здравствуйте, Teapot!
Почему не на писали какая ошибка?
1. Попробуйте во-первых указывать полный путь к файлу ('c: est.abc');
2. Не совсем корректная запись/чтение строки. Попробуйте написать:
blockwrite(f,buf[1],length(buf));
...
SetLength(buf2, FileSize(f));
BlockRead(f,buf2[1],FileSize(f));
Ответ отправил: Маренич Владимир (статус: 4-ый класс)
Отправлен: 03.11.2005, 10:28 Оценка за ответ: 4
Отвечает: Архангельский Андрей Германович
Здравствуйте, Teapot!
У Вас файл НЕТИПИЗИРОВАННЫЙ, а Вы читаете в buf типа string - несовпадение типов
Buf2 : array[0..512] of byte;
После этого преобразуйте byte в String, и тогда можно присваивать Memo
Ответ отправил: Архангельский Андрей Германович (статус: 5-ый класс)
Отправлен: 03.11.2005, 10:34 Оценка за ответ: 4 Комментарий оценки: Я не понял как можно считывать символы в byte а потом преобразовывать в string. Возможно ли это?! Пожалуйста отвечайте полностью.
Вопрос № 28.834
Доброго времени суток Ув. Эксперты!!!
Посмотрите пожалуйста на этот код в приложении и скажите что в нем не так потому что я намучился уже решая эту проблему.
Сейчас поясню мою проблему более подробно. Я делаю програмку и вней есть одно свойство которое позволяет пользователю установить время через которое сработает MediaPlayer и запустит мелодию в данном случаи это Бездна.mp3. Ну так вот в этом компоненте и есть проблема. Т.е. когда я ввожу путь к файлу через ObjectInspector то все работает. Но когда я вожу название через код (данный код в приложении) то ошибок не возникает только почемуто выпрыгивает сообщение такого содержания:
"Project Project1.exe raised exception class EMCIDeviceError with message 'Не удается определить тип устройства по указанному расширению имени файла.'. Process stopped. Use Step or Run to continue."
Отвечает: Rusland
Здравствуйте, Ujin Antikvar!
Нужно указать полный путь к файлу
MediaPlayer1.FileName:='c:ПолныйПутьБездна.mp3';
--------- Пресловутое недостающее звено между обезьяной и цивилизованным человеком - это как раз мы. (Конрад Лоренц)
Ответ отправил: Rusland (статус: Практикант)
Отправлен: 03.11.2005, 10:50 Оценка за ответ: 3 Комментарий оценки: Указывал все равно появляется это сообщение. :(
Отвечает: Татьяна
Здравствуйте, Ujin Antikvar!
Честно говоря, проверила - все работает, проблемы могут быть две
1. Либо он не там ищет файл - необходимо задать полный путь, например так
это и будет полный путь к файлу, при условии, что файл лежит в одной папке с программой
2. Вы создаете mediaplayer, кидая компоненту или динамически (в коде)? - если динамически, кроме того, что нужно создать объект, возможно еще и прописать некоторые свойства - проверьте
--------- Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 7-ой класс)
Отправлен: 03.11.2005, 11:05 Оценка за ответ: 5 Комментарий оценки: Спасибо уже все работает :)
Отвечает: Tsechoev Bagaudin
Здравствуйте, Ujin Antikvar!
Если свойство DeviceType=dtAutoSelect и при этом выдается данная ошибка, то скорее всего в ОС расширение mp3 не сопоставлено приложению или что более вероятно, этому расширению сопоставлен не виндовсовский медиаплеяр. Попробуй сперва указать полный путь к файлу, если не поможет, то укажи для расширения mp3 приложением по умолчанию WMP.
Удачи!
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: Студент)
Отправлен: 03.11.2005, 11:08
Отвечает: sir henry
Здравствуйте, Ujin Antikvar!
У Вас, скорее всего, свойство AutoOpen (у MediaPlayer'a) стоит True. Если при этом не задано имя файла, то естественно он не может по расширению определить подключаемое устройство для проигрывания. Поставьте False.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 03.11.2005, 11:25
Отвечает: Ерёмин Андрей
Здравствуйте, Ujin Antikvar!
Попробуйте указывать в FileName полный путь к файлу. Например, если файл находится в каталоге программы, то так:
MediaPlayer1.FileName:=ExtractFilePath(Application.ExeName)+'Бездна.mp3';
--------- Где найти кpяк под ковpик для однокнопочного мыша?
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 03.11.2005, 11:26
Отвечает: nimoid
Здравствуйте, Ujin Antikvar!
У меня все работает прекрасно. Попробуй поставить ExtractFilePath(ParamStr(0))+'Бездна.mp3' - т.е. указание полного пути к файлу.
Да, чуть не забыл - непонятно какое у тебя значение имеет переменная sek. Я ей присвоил значение 5, а таймер.интервал := 1000, т.о. через 5 сек. играет мп3-ка.
//------------------------------------------------------------
var
otschet: integer;
sek: integer = 5;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
otschet := otschet + 1;
ProgressBar1.Position := ProgressBar1.Position + 1;
Edit2.Text := IntToStr(otschet);
if (ProgressBar1.Position = sek) and (otschet = sek) then begin
If FileExists(ExtractFilePath(ParamStr(0))+'Orbital - Doctor.mp3') then begin
MediaPlayer1.FileName:=ExtractFilePath(ParamStr(0))+'Orbital - Doctor.mp3';
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
ProgressBar1.Position:=0;
Edit2.Text:='0';
Timer1.Enabled:=False;
end;
end;
//------------------------------------------------------------
--------- А так все хорошо начиналось...
Ответ отправил: nimoid (статус: 4-ый класс)
Отправлен: 03.11.2005, 12:12 Оценка за ответ: 5 Комментарий оценки: Спасибо уже все работает :)
Отвечает: Schmak
Здравствуйте, Ujin Antikvar!
Скорее всего у Вас свойство MediaPlayer'a AutoOpen установлено в true, поэтому когда Вы вводите имя файла в Object Inspector'e он работает. а при вводе из программы нет. Установите это св-во в false.
Ответ отправил: Schmak (статус: 5-ый класс)
Отправлен: 03.11.2005, 16:41
Вопрос № 28.844
Всем привет!
Есть ли компоненты, позволяющие работать с игровым джойстиком? Если да, подскажите, пожалуйста, как называются и где скачать. Или примерчик работы с джойстиком... Заранее благодарю за ответ.
Отвечает: Jadd
Здравствуйте, Ерёмин Андрей!
www.torry.net Поищи там.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 03.11.2005, 14:38 Оценка за ответ: 1 Комментарий оценки: К сожалению, оценки за такие ответы приходится ставить только в благодарность за участие, ничего личного...
Отвечает: Werewolf
Здравствуйте, Ерёмин Андрей!
Нижеприведенный код был взят из действующего приложения, вы можете переписать его под себя, главное - он показывает технологию работы с джойстиком.
var
myjoy: tjoyinfo;
begin
joygetpos(joystickid1,@myjoy);
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;
Не забудьте включить MMSYSTEM в список используемых (USES) модулей.
Можно так:
Доступ к джойстику (обрати внимание на JoyGetPos )
Uses MMSystem;
procedure TForm1.Timer1Timer(Sender: TObject);
var
MyJoy: TJoyInfo;
begin
JoyGetPos(JoystickID1, @myjoy);
Labelx.Caption := IntToStr(myjoy.wypos);
Labely.Caption := IntToStr(myjoy.wxpos);
RadioButton1.checked := (myjoy.wbuttons and joy_button1) > 0;
RadioButton2.checked := (myjoy.wbuttons and joy_button2) > 0;
end;
Ответ отправил: Werewolf (статус: Студент)
Отправлен: 03.11.2005, 14:50 Оценка за ответ: 5 Комментарий оценки: Спасибо за код! Конечно, вручную не очень удобно, но всё-таки возможно. Попробую ещё найти компоненты.
Отвечает: sir henry
Здравствуйте, Ерёмин Андрей!
На www.torry.net таких компонентов как собак недорезаных:
http://www.torry.net/quicksearchd.php?String=joysti&Title=Yes
Если речь идет о какой-то игре с использованием DirectX, то для управления джойстиком лучше использовать DirectInput.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 04.11.2005, 19:44 Оценка за ответ: 4