Member
Статус: Не в сети Регистрация: 17.11.2006 Откуда: Нижний Новгород
А по возможностям самого языка, что предпочтительнее?Мой дядя сисадмин в одной фирме и ему очень нравиться дельфи, он говорит что это самый полноценный язык, вот я и пытаюсь научиться чему нибудь по книжке А Жукова "Изучаем Delphi" для школьников.
_________________ - Что-то дурно мне, пойду-ка я к окну
- Ну иди, какни немного, я подожду..
Member
Статус: Не в сети Регистрация: 05.01.2003 Откуда: Москва Фото: 2
NachinaushiyOver Ну Дельфи - это Паскаль. Да, в нем некоторых вещей не хватает, которые есть в Си (хотя и правило наоборот тоже действует).
Начинать да, лучше всего с Дельфи (некоторые считают, что лучше начинать с Визуал Бейсика, но я в такой гадости программить не буду даже за 3K). Потом уже можно перейти на что-то другое - хотя в тоже время, сейчас на работе пишу все только в Дельфях и все отлично. Все то, что мне нужно, там есть или можно скачать откуда то.
_________________ Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!
procedure TForm1.Button1Click(Sender: TObject); var arrSnd: array of TMemoryStream; i, Cycles, Duration: Integer; sValue, wValue: Int64; begin Cycles:= 10; Duration:= 100; SetLength(arrSnd, Cycles); for i:= low(arrSnd) to High(arrSnd) do begin arrSnd[i]:= TMemoryStream.Create; SndCreate(arrSnd[i], 1000, Duration, 50); end; sValue:= GetTickCount; for i:= low(arrSnd) to High(arrSnd) do SndPlay(arrSnd[i]); wValue := GetTickCount - sValue; for i:= low(arrSnd) to High(arrSnd) do arrSnd[i].Free; Form1.Caption:= 'Общее время выполнения: ' + IntToStr(wValue) + ' ms, задержка между сигналами: ' + IntToStr((wValue - Duration * Cycles) div Cycles) + ' ms.'; end;
Но тут тоже есть свои нюансы. При первом после запуска выполнении резалт чуть выше, чем во всех последующих. Также для разной продолжительности сигнала (точка и тире) задержка разная. Это нужно учитывать, обсчитывая и "разбавляя" паузами. Кстати, а скока ms предписано для стандартной продолжительности звучания точки?
_SGK , Не хватает у меня толку применить код, на строки " SndCreate (arrSnd[i], 1000, Duration, 50);"
и "// SndPlay(arrSnd[i]);" пишет "Undeclared identifier".
_SGK писал(а):
Кстати, а скока ms предписано для стандартной продолжительности звучания точки?
Всё зависит от скорости передачи (я использовал 1 переменную - коэфициент, когда делал в Паскале.) Существуют стандартные соотношения (для комфортного приёма): длительность тире в 3 раза больше, чем точки; пауза между звуками = длине точки, а пауза между буквами - длине тире. Сейчас я поставил точку=50мс.
_SGK писал(а):
Хорош у тебя глазок
дык я телеграфом хорошо владею, сравнить сигнал и паузу могу .
_SGK писал(а):
задержка разная
Это я сразу заметил по корявости передачи кода, взятого прямо из паскалевского файла (с переделкой).
Общий план - реализовать возможность изменения тона, скорости и интервалов прямо во время работы.
Member
Статус: Не в сети Регистрация: 17.11.2006 Откуда: Нижний Новгород
По ходу работы с Delphi 6 возник простой вопрос. Как правильно сохранять созданную прогу как проект чтобы потом нажав на одну кнопочку включилась Делфи 6 с открытой сохраненной прогой и всё работало? а то я сохраняю проект, открываю и он компилируется в пустую форму. плиз помогите ламеру ...
_________________ - Что-то дурно мне, пойду-ка я к окну
- Ну иди, какни немного, я подожду..
_SGK , Не хватает у меня толку применить код, на строки " SndCreate (arrSnd[i], 1000, Duration, 50);" и "// SndPlay(arrSnd[i]);" пишет "Undeclared identifier".
Смотри мой пост на предыдущей странице, там unit SndUtl, это оттуда. Или сделай аналогично для MakeSound
Ага, врубился. Пахает .
Вот так я хочу реализовать корректировку паузы:
Код:
Procedure TForm1.t ; //задержка Begin If w1<5 then Sleep (5-w1); // w1:=1; End;
Procedure TForm1.k ; //короткий - точка Begin w1:=GetTickCount; MakeSound(1200, 5, 60); w1:=GetTickCount-w1-5; t //задержка End;
Это срабатывает при точке, большей 30мс, а на высоких скоростях вынужденная пауза больше необходимой и как её уменьшить я не знаю. Проблема, однако... .
Думаю, что нет смысла каждый раз измерять задержку, правильней будет замерять один раз средние продолжительности задержек для точки и тире и, пользуясь этими данными транслировать в последовательность команд. Ведь отталкиваясь от продолжительности звучания точки и средних задержек для точки и тире все можно легко просчитать. Возможная погрешность в 5-ок ms между сигналами ИМХО несущественна. Уши поди не как у слона, чи шо?
vis11 писал(а):
а на высоких скоростях вынужденная пауза больше необходимой
Ну, фиг знат я не специалист в азбуке Морзе, шо ишо за высокие скорости? Я в шоке…
vis11 писал(а):
и как её уменьшить я не знаю.
Я у тебя специально спрашивал о рекомендованной длительности звучания точки. Как я понял, ее нет, а есть только соотношение между продолжительностью звучания точки и всем остальным. Вот и подбери продолжительность точки так, чтобы остальное соответствовало.
Так ведь скорость должна при необходимости меняться во время работы, а не задаваться заранее. То же касается тона и самих пауз.
_SGK писал(а):
шо ишо за высокие скорости?
Скорость обычно измеряется в знаках в минуту. Необходимо, чтобы прога поддерживала качественную передачу хотябы
200 зн/мин. Я правда столько не принимаю-это из области рекордов, но вполне достижимых. Чтобы понять, надо услышать.
200 зн/мин со стороны уже похоже на треск. (точка ок 10мс). Могу код послать, тока он громоздок.
Нашёл аналогичную прогу на Delphi написанную - так там максимальная скорость невысока. Неужто та же проблема была?
И вроде как исходники к ней есть. Токо фиг я в них разберусь ...
vis11 Учитывая то, что с правилами передачи сигналов азбукой Морзе я познакомился после твоего поста советчик из меня, мягко говоря, неважный. Однако я точно понял то, что для передачи все взаимосвязано, а значит просчитываемо. Смотрим: "В азбуке Морзе каждой букве соответствует комбинация из длинных посылок (тире) и коротких посылок (точек)". 1. За единицу длительности в телеграфной азбуке принимается длительность точки. 2. Длительность тире равняется длительности трех точек. 3. Пауза между знаками в букве - одна точка. 4. Пауза между буквами в слове 3 точки. 5. Пауза между словами 7 точек. Насколько я понял это все. При использовании с ПК нужно учитывать еще пару моментов, таких как задержки на создание самих звуков точки и тире и задержки между звучанием точки и тире, для корректирования длинны пауз между сигналами. Соответственно располагая этими данными и отталкиваясь от продолжительности звучания точки и задержек для точки и тире (точка * 3) все паузы легко просчитываются. По входящим данным (предложению) строится список последовательности команд, состоящий из коротких звуков (точек), пауз и длинных звуков (тире). И потом все это дело радостно передается (обрабатывается в цикле) за один раз - пакетом. Пример: С уважением, В. Пупкин. = последовательность команд передаваемых за один раз. И ненужно каждый раз создавать экземпляр TMemoryStream, создал до передачи, отработал и освободил.
vis11 писал(а):
Так ведь скорость должна при необходимости меняться во время работы, а не задаваться заранее.
Думаю, что правильно создать три профиля: начинающий, профессионал, эксперт. Для каждого профиля иметь пять параметров: продолжительность звучания точки, задержка для точки, задержка для тире (точка * 3), тон звучания точки, тон звучания тире. Все паузы рассчитывать, отталкиваясь от этих данных. Каждого "собеседника" "привязать" к конкретному профилю.
vis11 писал(а):
То же касается тона и самих пауз.
Смотри выше.
vis11 писал(а):
200 зн/мин. Я правда столько не принимаю-это из области рекордов, но вполне достижимых.
Думаю, что если ты передашь ему вместо двухсот знаков сто, то он от этого не умрет, опять же будет ему время "в носу поковыряться"… Позитив есть везде…
Такое никак не прокатит. При тренировке скорость наращивается постепенно, шаг не более 5 зн/мин. К тому же у всех свои вкусы в плане тона и пауз.
_SGK писал(а):
экземпляр TMemoryStream, создал до передачи, отработал и освободил.
Тоже низзя . Скорость должна менятся во время передачи, её на слух подстраивают для комфортной работы, как и тон.
_SGK писал(а):
вместо двухсот знаков сто
И тут уступку не сделать. Например, норма для МС - 180, для КМС - 150 зн. Я сам 130 принимаю. Поэтому чёткая работа должна обеспечиваться до 180 - 200.
_SGK писал(а):
Позитив есть везде
Можно, конечно, создавать TMemoryStream для 5 букв (группа), но это не есть гут.
Не стоит понимать мои слова буквально , это было лишь общий взгляд на вопрос. Мало три профиля - создай хоть 133 , ИМХО не принципиально. Хоть вообще на каждый контакт отдельные установки. Принципиально лишь то , что при использовании всего двух звуков - точки и тире ТУПО каждый раз для них выделять и освобождать память плюс создавать звук. Создай два звука сразу под конкретного человека (его скорость) в двух экземплярах TMemoryStream, а потом просто проигрывай нужный, с помощью sndPlaySound.
vis11 писал(а):
Можно, конечно, создавать TMemoryStream для 5 букв (группа), но это не есть гут.
Member
Статус: Не в сети Регистрация: 17.11.2006 Откуда: Нижний Новгород
Подскажите пожалуйста, что нужно написать в процедуре Button1Click(Sender: TObject) чтобы при нажатии без подтверждения выключался компьютер? Ещё один вопрос: почему при включении программы скомпилированной в delphi 6 на XP SP2 она выглядит нормально, ка и все окна windows, а когда сожмешь её до минимума она становится в стиле windows 98 (или даже хуже)? и как это можно предотвратить
Member
Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
NachinaushiyOver он есть только в Delphi7 и выше.
PS замени картинку на ссылку, по размерам нарушение правил.
PS PS дальнейшее обсуждение предлагаю перенести в асю или личку, дабы не разводить тут санта барбары.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Member
Статус: Не в сети Регистрация: 13.02.2004 Откуда: Чехия
Доброго вечера всем
Подскажите, как из Делфи обратиться к переменной другой программы. Попытаюсь обЪяснить понятней:
Работаю в программе (WorkNC), в этой проге открыт проэкт с которым работаю. Из меню WorkNC запускаю свою прогу написанную в Делфи (WorkNC остается открытым). Известно имя переменной WorkNC (например WNC_DOC_HTML_OUT = $WNCZONE/doc). Вопрос: как считать значение WNC_DOC_HTML_OUT в Делфи программе.
P.S. Если что непонятно написал - уточню. Помогите, пожалуйста, очень нужно. (можно дать ссылку на пример, постараюсь разобраться)
_________________ Лучше иметь пузо от пива, чем горб от работы.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения