Вопросы по программированию

Автор Богдан, 03 Листопад 2007, 11:41:18

Попередня тема - Наступна тема

Haker

Цитата: edd_k від 22 Грудень 2008, 10:50:16


А подробнее?
Какой проект - консольный или GUI?
Белый фон - это как выглядит? И что должно быть (кусочек кода покажи).
Запуск твоей программы = запуск ее экзешника. Т.е. он есть. Там куда настроен вывод бинарников. По умолчаю где-то в папке проекта.


#include <iostream.h>
#include <string.h>
using namespace std;

class GradeBook
{
public:
   void displayMessage (string courseName)
   {
     cout << "Welcome to the GradeBook for\n" << courseName << "!" << endl;
   }
};

int main ()
{
  string nameOfCourse;
  GradeBook myGradeBook;
  cout << "Please enter the course name:" << endl;
  getline (cin, nameOfCourse);
  cout << endl;

  myGradeBook.displayMessage (nameOfCourse);
  return 0;
}
Вот код. Проект мм.. консольный. Появляется окошко, где по идее должно быт приглашение "Please enter the course name:" , но там просто белый фон.

Edd.Dragon

ЦитатаВот код. Проект мм.. консольный. Появляется окошко, где по идее должно быт приглашение "Please enter the course name:" , но там просто белый фон.
А если запустить экзешник например из-под Пуск \ Выполнить или в Фаре?

Haker

Цитата: edd_k від 23 Грудень 2008, 00:48:35
А если запустить экзешник например из-под Пуск \ Выполнить или в Фаре?

дело в том что не могу найти или сохранить екзешник.
Днем еще буду копаться, там куча папок. Хоть и сделал минимальную установку.

Edd.Dragon

Цитата: Haker від 23 Грудень 2008, 01:15:29
дело в том что не могу найти или сохранить екзешник.
Днем еще буду копаться, там куча папок. Хоть и сделал минимальную установку.
"Сохраняешь" ты его, когда жмешь билд или ран. А уж куда - кому лучше знать, где ты проект создал.


FalseMan

#454
2firefire оно говорит: доступ запрещен. выставь права на эту папку ;)

Edd.Dragon

Цитата: FalseMan від 23 Грудень 2008, 12:34:11
оно говорит: доступ запрещен. выставь права на эту папку ;)
Это ты с кем говорил? Хоть бы имя для приличия вставил )))

firefire

#456
Цитата: edd_k від 23 Грудень 2008, 12:35:28
Это ты с кем говорил? Хоть бы имя для приличия вставил )))

Он уже поставил  :)
Цитата: FalseMan від 23 Грудень 2008, 12:34:11
2firefire оно говорит: доступ запрещен. выставь права на эту папку ;)
Ща посмотрим...
[Update]: Урааа заработало! :).

Haker

О. Есть, все нашел как екзешник делать. Нужно сначало сделать *.cpp файлик, потом открыть его билдером. Он автоматически предлагает его скомпилировать и запустить. Но екзешник 5 Си отличается от Си 3.1 неймоверно здоровым размером, и тем, что теперь нельзя поставить "не закрывать программу по ее завершении" в свойствах.
А как все-таки установить фриКомандЛайнТулз?

FalseMan

Цитата: Haker від 24 Грудень 2008, 00:42:31
и тем, что теперь нельзя поставить "не закрывать программу по ее завершении" в свойствах.
Цитата#include <conio.h>
int main(int argc, char* argv[])
{
    ...
    getch();
    return 0;
}
;)

Edd.Dragon

#459
Цитата: Haker від 24 Грудень 2008, 00:42:31
О. Есть, все нашел как екзешник делать. Нужно сначало сделать *.cpp файлик, потом открыть его билдером.
Я все понял. До этого ты программил в тетрадке...

Программисты обычно делают нужные файлы уже в Билдере. Ну вобщем-то с этого и начинается работа - я проект создаю... Мне даже трудно представить, как можно писать прогу в билдере, не создав проекта с соответсвующими cpp и прочими файлами... Что ж ты тогда раньше в нем делал?  ???


Цитатаи тем, что теперь нельзя поставить "не закрывать программу по ее завершении"
А каким боком это должно относиться к Билдеру, среде программирования? При чем в первую очередь визуальной для оконных проектов. Зачем же в него переносить то, что нужно было досовскому?

Для консольных прог никто не мешает юзать Far в качестве консоли.



resiver

Вопрос следуюший: если у меня есть одномерный массив ну например sum[i] и я хочу обнулить етот массив перед его использованием, и если напишу - sum[i] = 0; то ето будет считаться как грубейшая ошибка или я правильно обнуляю его?
Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

Edd.Dragon

sum[j] - это массив или j-й элемент массива?
sum[j] = 0 - это обнуление массива или j-го элемента массива?

resiver

да ето массив.Только не sum[j]  а sum[i] массив одномерный
Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

ale-xx

Цитата: resiver від 24 Грудень 2008, 17:04:44
да ето массив.Только не sum[j]  а sum[i] массив одномерный
resiver, нужно обнулять каждый элемент массива.

Edd.Dragon

#464
Цитата: resiver від 24 Грудень 2008, 17:04:44
да ето массив
Ты смеешься? Массив - это sum, а sum[j] - это его единственный j-ый элемент. Качай учебник по попрограммированию. Не важно на каком языке. Учи от корки до корки и потом возвращайся.

Пойми - мы сейчас разговариваем об автомобилях, когда один из нас толком не понимает что такое "руль", "педали", "бензин". Толку отвечать на твои вопросы, если ты не понимаешь базовых понятий, т.е. не понимаешь ответов.

Ты когда вопрос писал даже ТИП не указал своего sum. А предлагаешь в него нуль совать.

Цитата: resiver від 24 Грудень 2008, 17:04:44
Только не sum[j]  а sum[i]
И в чем разница (кроме крючечка у буквы "йот")?  ???

resiver

Цитата: edd_k від 24 Грудень 2008, 17:12:45
Ты смеешься? Массив - это sum, а sum[j] - это его единственный j-ый элемент. Качай учебник по попрограммированию. Не важно на каком языке. Учи от корки до корки и потом возвращайся.

Пойми - мы сейчас разговариваем об автомобилях, когда один из нас толком не понимает что такое "руль", "педали", "бензин". Толку отвечать на твои вопросы, если ты не понимаешь базовых понятий, т.е. не понимаешь ответов.

Ты когда вопрос писал даже ТИП не указал своего sum. Может его вообще невозможно обнулить
И в чем разница (кроме крючечка у буквы "йот")?  ???

:D Ну вы даете!!вот именно елементом одномерного массива являеться i - тый елемент, а не j - тый! имхо в двумерном массиве используеться [i] [j]
Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

ale-xx

Цитатаелементом одномерного массива являеться i - тый елемент, а не j - тый!
edd_k, он по любому прикалывается.  :D

Edd.Dragon

Цитата: resiver від 24 Грудень 2008, 17:19:03
:D Ну вы даете!!вот именно елементом одномерного массива являеться i - тый елемент, а не j - тый! имхо в двумерном массиве используеться [i] [j]
Сам понял что сказал?


Вот тебе код для медитаций:

char pwd[10];
int j, ja_ne_budu_ispolzovat_i;

main()
{
   j = 6;
   ja_ne_budu_ispolzovat_i = 3;

   pwd[5] = pwd[j] - pwd[ja_ne_budu_ispolzovat_i];

   return 0;
}


Вот тебе вопросы:
- "Где же i?"
- "Какая разница?" - этот вопрос из предыдущего моего сообщения, на который ты не захотел отвечать
- "Ты уже прочел учебник? Какой именно?"


βεερ_βooρ

Цитата: ale-xx від 24 Грудень 2008, 17:25:46
edd_k, он по любому прикалывается.  :D

Ну как минимум желания учиться у него точно не наблюдается. :-X
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

FalseMan

Цитата: beep_boop від 25 Грудень 2008, 01:28:52
Ну как минимум желания учиться у него точно не наблюдается. :-X
Цитата: FalseMan від 19 Грудень 2008, 20:44:07
resiver, вот я читаю тему и хочу спросить, тебе это надо в школу/институт, а учишься ты на экономиста там или геолога? или ты для общего развития? просто интересно ;)
на этот вопрос не ответили. Думаю всем понятно, почему мне "просто интересно"? :)

Haker

Цитата: edd_k від 24 Грудень 2008, 09:55:40
Я все понял. До этого ты программил в тетрадке...

Программисты обычно делают нужные файлы уже в Билдере. Ну вобщем-то с этого и начинается работа - я проект создаю... Мне даже трудно представить, как можно писать прогу в билдере, не создав проекта с соответсвующими cpp и прочими файлами... Что ж ты тогда раньше в нем делал?  ???

А каким боком это должно относиться к Билдеру, среде программирования? При чем в первую очередь визуальной для оконных проектов. Зачем же в него переносить то, что нужно было досовскому?

Для консольных прог никто не мешает юзать Far в качестве консоли.



дык... Хе! я ж программил  до этого в Си 3.1, а там просто написал  и жми ран. Да для новичков Си 5 немного перегружен.
Я уже открываю проги из под cmd.
Спасибо! +1 у тебя в репутации :)

Edd.Dragon

Цитата: Haker від 25 Грудень 2008, 16:36:59
дык... Хе! я ж программил  до этого в Си 3.1, а там просто написал  и жми ран.
Так тут то же самое. Выбираем "Создать новый проект" (консольный) - появился сходу готовый файл с кодом. Всё. Можешь жать F9 (если правильно помню), т.е. Run. Только ж чтобы не закрывалось нужно приписывать ченить )))))


ЦитатаЯ уже открываю проги из под cmd.
Не удобно. Никакой визуальности при лазаньи по файлам. А в фаре, как и в любом файл-менеджере, лазь куда хочешь быстро. Просматривай любые файлы (особенно если программа будет их генерировать), создавай и редактируй текстовые файлы (например, с исходными данными для проги).

Andrii

Шановні програмісти (особливо Паскальщики), ось моя районна олімпіада з інформатики, допоможіть мені рішити ці всі завдання, а то вчителька моя сама не знає як рішати :)


Міністерство освіти і науки України
Управління освіти і науки Вінницької обласної державної адміністрації
Вінницький обласний інститут післядипломної освіти педагогічних працівників
XXII Всеукраїнська олімпіада з інформатики
Завдання 2-го (районного/міського етапу)
10-11 класи
Задача First. В першому півріччі навчального року заняття проходять з 1 по 8 та з 10 по 17 тижні (дев'ятий тиждень - канікули). В розкладі одного з класів п'ять днів на тиждень (від понеділка до п'ятниці) відбувається по шість уроків щодня, всього 480 уроків за півріччя. Всі ці уроки перенумеровані. Складіть програму, що визначає, на якому тижні та в який день тижня відбувається урок з даним номером N.   
Приклади    Введення    Виведення
1                      239              8 5
2                      242            10 1
Технічні   умови. Програма First читає з клавіатури ціле число - номер уроку (від 1 до 480) і виводить на екран два числа через пропуск: номер тижня та номер дня в тижні (понеділок - 1, вівторок -2 , середа -3 і т.д.)

Задача Second. Позначимо через Рі і-те просте число (Р1=2, Р2=3, Р3=5 тощо). Для даного числа n розглянемо вираз: Р1 / Р2 / РЗ / ... / Рn. Напишіть програму, яка б підраховувала, скільки різних раціональних чисел можна отримати, розставляючи в даному виразі дужки Напр., якщо n=4, то таких чисел буде теж 4: (((2/3)/5)/7 = 2/105, 2/(3/(5/7)) = 10/21, (2/3)/(5/7)=14/15 та 2/((3/5)/7) = 70/3.
Технічні умови. Програма Second читає з клавіатури ціле число n (від 2 до 100) і виводить на екран кількість можливих раціональних чисел.
Приклад   Введення  Виведення
                 4                 4
Задача Third В класі навчається D (1<=D<=25) дівчат та Н (0 <= Н <= 25) хлопців (всього D+Н <= 35). Перенумеруємо дівчат від 1 до D, а хлопців (якщо вони є в класі) від D+1 до D+Н. В класі утворилося К дружніх компаній (в кожній з яких не менше двох осіб), які не мають таємниць один від одного, причому всі друзі дівчат дізнаються про новину через дві години після того, як дізналась вона, а друзі хлопців через п'ять (незалежно від часу дня та ночі). Одна особа може входити до складу різних компаній. Дочка вчительки літератури (її номер в класі 1) зовсім випадково о 13 годині першого грудня дізналася про тему контрольного твору. Якого числа та о котрій годині весь клас вперше буде знати цю тему?
Технічні умови. Програма Third читає з клавіатури рядок з трьох чисел D, Н та К, а далі К рядків, в яких записані в довільному порядку номери учнів, що входять до складу однієї компанії. Усі числа натуральні.. Програма виводить на екран через пропуск число в грудні та час, коли весь клас вперше буде знати тему. Якщо клас «недостатньо» дружний та не всі зможуть дізнатися про цю новину, то до файлу вивести одне число -1.
Приклади
Введення:        Виведення:
5 5 4                   2 3
1 2 3 7
7 8 4
4 9 10
5 10 6

Введення:         Виведення:
5 5 2                   -1
1 2 3 4 5
6 7 8 9 10
Пояснення прикладів. В першому прикладі дочка вчительки (її номер 1) буде знати тему першого грудня о 13-й годині, учні 2, 3 та 7 - о 15-й годині, 4 та 8 - о 20-й годині, 9 та 10 - о 22-й годині, а 5 та 6 дізнаються другого грудня о 3-й годині. В другому прикладі до хлопців тема так і не дійде.

Edd.Dragon

ЦитатаЗадача First. В першому півріччі навчального року заняття проходять з 1 по 8 та з 10 по 17 тижні (дев'ятий тиждень - канікули). В розкладі одного з класів п'ять днів на тиждень (від понеділка до п'ятниці) відбувається по шість уроків щодня, всього 480 уроків за півріччя. Всі ці уроки перенумеровані. Складіть програму, що визначає, на якому тижні та в який день тижня відбувається урок з даним номером N.   
Условие не допоняли?  )))

Есть поезд. 16 вагонов. В каждом вагоне по 5 купе. В каждом купе по 6 мест. Итого: 6*5*16 = 480 мест.

Я называю тебе номер места (например 345). Ты мне отвечаешь, в каком это вагоне и в каком его купе. Можно и в уме, если постараться ))

Тут то же самое - 16 недель, 5 дней в каждой из недель, 6 уроков в каждом из дней.

Вот только нам вставили после 8-го вагона вагон-ресторан. Но забудь что он есть и считай как буд-то его нет. А потом если в ответе вышло, что указанное место в 9-ом (или более) вагоне, значит надо увеличить в ответе номер вагона на 1.



Остальные надо "рисовать", не на ночь глядя %)))

Sir_Lanselot

Ось код програми першої задачі. Може алгоритм трохи збоченський(так говорить мій вчитель), але програма функціонує.
Цитата
Program first;
        uses WinCrt;
        var N,flag,dey,k,z:integer;
Begin
     ReadLn(N);
     z:=N;
     while z>0 do
           begin
                z:=z-30;
                flag:=flag+1;
           end;
     k:=(flag*30)-N;
     dey:=5;
     while k>=6 do
           begin
                k:=k-6;
                dey:=dey-1;
           end;
     if flag=9 then
                  begin
                       flag:=flag+1;
                       WriteLn(flag,' ',dey);
                  end
                  else writeLn(flag,' ',dey);
End.
В оцікуванні дива.....

Ivan_32

В Висте возможна запись в буффер обмена? Я попытался воспользоватся SetClipboardData но естественно ничего у меня не получилось... Аргуменый правильные все было правильно, функция просто тупо не сработала. Буфер был открыт моей прогой. Обидно то что прочесть я смог, а вот записать немогу....

invoke GlobalUnlock,hMemory
invoke SetClipboardData,CF_TEXT,hMemory

По какой то непонятной причине в буфер обмена записывается то ли пробел то ли что то еще несустветное.. в общем далеко не распарсеная строка...
Чем больше я узнаю, тем больше чувствую себя дураком...

Edd.Dragon

#476
Цитата: Sir_Lanselot від 26 Грудень 2008, 20:18:12
Може алгоритм трохи збоченський(так говорить мій вчитель)
Ага )))

while z>0 do
           begin
                z:=z-30;
                flag:=flag+1;
           end;

Тут ты реализовал целочисленное деление на 30 ))) Т.е. просто

// Паскаль
flag := z div 30;

// С
flag = z / 30; // при условии что z - целочисленного типа


Далее ты вычисляешь и остаток от деления на 30:

// Паскаль
k := z mod 30;
// С
k = z % 30;


Таким образом решение превращается в:
Begin
  ReadLn(lessonID);
  Dec(lessonID); // т.к. для простоты и прозрачности формул нужно чтобы счет был с нуля, а не с 1
  dayID := (lessonID mod 30) div 5;
  weekID := lessonID div 30;
  if weekID > 7 then Inc(weekID);

  WriteLn(weekID + 1, " ", dayID + 1); // +1 - т.к. пользователь ожидает нумерацию с единицы
End.




Цитата: Ivan_32 від 27 Грудень 2008, 16:21:38
В Висте возможна запись в буффер обмена? Я попытался воспользоватся SetClipboardData но естественно ничего у меня не получилось...
Ты б кусок кода привел

Ivan_32

Уже решил проблему, правда немного непрямым методом, главное работает. Интересует такая вещь. Как можно получить адрес метки? Мне фактически нужно получить адрес кода и хорошо бы было его размерность тоже, точнее размерность инструкции.  Например вот есть
push 0
link:push 0
push 0
push 0
call MessageBox
Каким образом получить адрес метки Link ?
Чем больше я узнаю, тем больше чувствую себя дураком...

βεερ_βooρ

Цитата: Ivan_32 від 30 Грудень 2008, 02:55:56
Уже решил проблему, правда немного непрямым методом, главное работает. Интересует такая вещь. Как можно получить адрес метки? Мне фактически нужно получить адрес кода и хорошо бы было его размерность тоже, точнее размерность инструкции. 
Размер инструкции зависит от разных факторов. Разность использованых регистров(16/32б), использование нестандартных сегментных регистров, вообщим тут надо брать справочник по командам МП и смотреть.
Цитата: Ivan_32 від 30 Грудень 2008, 02:55:56
Например вот есть
push 0
link:push 0
push 0
push 0
call MessageBox
Каким образом получить адрес метки Link ?
Метка по своей сути и есть адрес. Как и имя переменной.
Для TASM/MASM/WASM:
mov ax, offset lbl
загрузит в ах адресс lbl
Для  NASM/FASM вместо offset  насколько я помню используются квадратные скобки.
Если нужно посчитать какой-то сложный адресс используй команду lea
lea ax, var ; примитивный сучай
lea ax,[bx][si]+2 ; адресация по базе с индексированием
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Ivan_32

Существуют ли в природе компиляторы C/С++ генерящие код для реального режима? Выдающие например com.
Чем больше я узнаю, тем больше чувствую себя дураком...

FalseMan

Цитата: Ivan_32 від 04 Січень 2009, 10:07:13
Существуют ли в природе компиляторы C/С++ генерящие код для реального режима? Выдающие например com.
гм-м-м... старые компиляторы под ДОС, например Борландовские?

βεερ_βooρ

Цитата: FalseMan від 04 Січень 2009, 15:09:09
гм-м-м... старые компиляторы под ДОС, например Борландовские?
Ну и DOS-овский порт gcc вроде умеет.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Andrii

Спитаю для загального розвитку: "В чому найчастіше пишуть сучасні ігри? Де можна почитати пр сам процес, бо дуже цікаво як зявляться такі творіння"!!! :%)

βεερ_βooρ

Цитата: Andrii від 04 Січень 2009, 16:41:16
Спитаю для загального розвитку: "В чому найчастіше пишуть сучасні ігри?
Зависит от самой игры. Обычно на С++ или флеш(всякие казуалки)
Цитата: Andrii від 04 Січень 2009, 16:41:16
Де можна почитати пр сам процес, бо дуже цікаво як зявляться такі творіння"!!! :%)
Процесс разработки отличается в зависимости от разработчика.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Andrii

Цитата: beep_boop від 04 Січень 2009, 16:56:37
Процесс разработки отличается в зависимости от разработчика.
Ну для прикладу НФС. Десь можна почитати як робили (на рос мові)
2 ВВ: ти якісь ігри робив? Якшо да, то дай лінки!

βεερ_βooρ

Цитата: Andrii від 04 Січень 2009, 16:59:18
Ну для прикладу НФС. Десь можна почитати як робили (на рос мові)

Скорее всего не найдешь, тем более на русском. Абсолютному большинству геймеров методология разработки ПО абсолютно неинтересна, поэтому данные сведения не публикуются.
Цитата: Andrii від 04 Січень 2009, 16:59:18
2 ВВ: ти якісь ігри робив? Якшо да, то дай лінки!
Нет, не делал.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Ivan_32

С точки зрения программирования достаточно понять как создается картинка. Движок игры создает некую векторную картинку состоящую из тысяч полигонов(а в нынешних игра из миллионов). Картинка передается в видеобуфер(видеопамять) и оттуда считывается монитором. Разработка игры это прежде всего разработка классового скелета(в нынешних играх).
На его основе строятся уже все остальные элементы игры, физика AI итд. А вот рендер движок совсем другая тема. В его задачу входит преобразовать структуру данных передаваемую логическим ядром(АI, физика) в картинку. Тоесть допустим он передаст массив кординат обьектов(на деле применяется структура данных, в которой есть поля координат , тип обьекта  и прочие). Соотвественно рендер-движок анализирует эту информацию и в соотвественно месте появится обьекты. Кстати в DirectX до сих пор нет нормальных средств для управления камерой - до сих пор приходится вертеть сцену относительно камеры :D (а может и есть уже?).
Я лично игр не разрабатывал но с компонентной частью немного знаком.
Применяется там много разных языков. Используется С++ и ASM полным ходом. Первый для классового скелета второй для написания уж очень сложных - заковыристых процедур(где компилятор не сможет нормально оптимизировать код. Часто в игру добавляют сервер баз данных, да впрочем без него наверно ни одна игра не обошлась. Язык запросов там скажем так самописный=) Часто движок игры делает унифицированным. Его делают таким что бы он максимальное количество данных брал из ресурсов игры. Например поддержка LUA скриптов есть у CryEngine 1 , 2
у второго кстати есть уже поддержка XML. В общем игровой движок часто смахивает на ОС. Тоже работа с данными, несколько уровней аппаратной абстракции, менеджмент памяти, пул потоков итд.
Пособий о том как разрабатывать игры много, просто все они чаще всего привязаны к определенному языку программирования и не зная этот самый язык, разобраться что где и как будет сложновато...

Чем больше я узнаю, тем больше чувствую себя дураком...

Ivan_32

Заранее прошу прощения за дабл-пост. В данной ситуации другого выхода нет. 
Хотелось бы узнать каким образом в Win32 можно воспроизводить звуки, точнее говоря работать с кодеками, воспроизводить звук из файлов. Иными словами хотелось бы написать свой плеер(или жалкое подобие).
Чем больше я узнаю, тем больше чувствую себя дураком...

FalseMan

Цитата: Ivan_32 від 12 Січень 2009, 02:02:46
Заранее прошу прощения за дабл-пост. В данной ситуации другого выхода нет. 
Хотелось бы узнать каким образом в Win32 можно воспроизводить звуки, точнее говоря работать с кодеками, воспроизводить звук из файлов. Иными словами хотелось бы написать свой плеер(или жалкое подобие).
Насколько я помню, там каким-то образом(если плеер чисто побаловаться) используется Windows Media Player, поскольку он всегда встроен ;)

firefire

Цитата: Ivan_32 від 12 Січень 2009, 02:02:46
Заранее прошу прощения за дабл-пост. В данной ситуации другого выхода нет. 
Хотелось бы узнать каким образом в Win32 можно воспроизводить звуки, точнее говоря работать с кодеками, воспроизводить звук из файлов. Иными словами хотелось бы написать свой плеер(или жалкое подобие).
Если программировать с помощью Delphi or Borland C++ Builder, то насколько я знаю там есть модуль "Media Player"  ;)

Ivan_32

MASM. Мне нужно то что будет самым низкоуровневым - семейство WinAPI функций или же имя нужного драйвера и его функции. Но я все таки думаю что те кто писали плееры явно не на базе WMP их ваяли...
Чем больше я узнаю, тем больше чувствую себя дураком...

βεερ_βooρ

#491
Цитата: Ivan_32 від 12 Січень 2009, 11:07:43
MASM. Мне нужно то что будет самым низкоуровневым - семейство WinAPI функций или же имя нужного драйвера и его функции. Но я все таки думаю что те кто писали плееры явно не на базе WMP их ваяли...
Единственный извсный мне API с биндингом к MASM - BASS
ЦитатаBASS is an audio library for use in Windows and Mac OSX software. Its purpose is to provide developers with powerful and efficient sample, stream (MP3, MP2, MP1, OGG, WAV, AIFF, custom generated, and more via add-ons), MOD music (XM, IT, S3M, MOD, MTM, UMX), MO3 music (MP3/OGG compressed MODs), and recording functions. All in a tiny DLL, under 100KB* in size.

On Windows, BASS requires DirectX 3 or above for output, and takes advantage of DirectSound and DirectSound3D hardware accelerated drivers, when available. On OSX, BASS uses CoreAudio for output, and OSX 10.3 or above is recommended. Both PowerPC and Intel Macs are supported.

C/C++, Delphi, Visual Basic, and MASM APIs are provided, with several examples to get you started. .Net and other APIs are also available.
Но она только для аудио.
Относительно кодеков.
Windows Media Audio and Video codecs and digital signal processors API
Интерфейсы к Виндошным кодекам реализованы через жопу COM. Применение ассемблера в данном случае я считаю нецелесообразным и пустой тратой сил.

UPD:
Если очень уж хочется, то есть несколько вариантов:
- Использовать сторонние кодеки.(Тот же ffmpeg)
- Писать "на основе WMP", мараться с СОМ, зато получить партийно-правильное решение и узнать что использованый API уже объявлен устаревшим пока писал и отлаживал это поделие.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Edd.Dragon

Цитата: Ivan_32 від 04 Січень 2009, 18:52:44
С точки зрения программирования достаточно понять как создается картинка. Движок игры создает некую векторную картинку состоящую из тысяч полигонов(а в нынешних игра из миллионов).
Ну рендеринг нынче по большей части лег на плечи видеокарты, ее дров и DirectX\OpenGL. А движки игр сконцентрировались на управлении этим процессом ну и как ты дальше написал - остальной логикой, физикой и т.д.

Единственное, что еще шейдеры (проги для видеокарты) пишут для того, чтобы обеспечить нестандартные моменты обработки объектов или результирующей картинки. Но они уже к самому движку не относятся, а относятся к игре в целом.

Andrii

Мені треба написати реєстрацію для сайта. Я ніколи цим не займався і хочу навчитися, але не знаю де про це йде мова. Тай кажу, якшо хтось знає, хай допоможе мені. З мене +1

Anton T.

Цитата: Andrii від 17 Січень 2009, 20:13:02
Мені треба написати реєстрацію для сайта. Я ніколи цим не займався і хочу навчитися, але не знаю де про це йде мова. Тай кажу, якшо хтось знає, хай допоможе мені. З мене +1
Это значит гостевая книга?  :-\

Andrii

Цитата: AntonT від 17 Січень 2009, 20:50:22
Это значит гостевая книга?
Не поняв! Яка гостьова книга? Мені треба або книгу, або скріпт, або мені хай розкажуть як робити :)

Anton T.

Цитата: Andrii від 17 Січень 2009, 21:15:00
Не поняв! Яка гостьова книга? Мені треба або книгу, або скріпт, або мені хай розкажуть як робити :)
http://woweb.ru/load/54 - PHP
http://woweb.ru/load/1 - Perl

firefire

#497
Цитата: Andrii від 17 Січень 2009, 21:15:00
Не поняв! Яка гостьова книга? Мені треба або книгу, або скріпт, або мені хай розкажуть як робити :)
Регистрация на сайте?
Вот смотри.Например в index.php есть форма html регистрации.
<form enctype="multipart/form-data" action="register.php" method="post">
name:<input name="name" type="text">
login: <input name="login" type="text">
............
<input type="submit" value="Register!">
</form>

Эта форма отправляет данные в какой-то скрипт( пусть будет register.php) значении $nick, $name, $pass  и т.д. Что делает скрипт? Записывает этих данных в базу данных(на перед созданную таблицу, который состоит из n колонок(имя, пароль, ник и т.д.)).

Форма входа:
Создаешь тоже форму на html(поля nick, pass). Эта форма отправляет данные в скрипт (например login.php). Он принимает данные $nick,$pass и соединяет с СУБД. Там он проверяет: есть ли такой ник с таким паролем? Если нет - False, если есть - True, после чего index.php выдадет скрытый код для не зарегистрированного зарегистрированному. Для того чтобы каждый раз не логиниться следует поработать с Сookies.
<form enctype="multipart/form-data" action="login.php" method="post">
Nick:<input name="nick" type="text">
pass: <input name="pass" type="text">
<input type="submit" value="Go!">
</form>


UPD: Documentation(если "забыл" как это делать  :) ): PHP. Работа с СУБД MyDQL, Method GET and POST


Andrii

Цитата: firefire від 17 Січень 2009, 21:56:01
Регистрация на сайте?
Вот смотри.Например в index.php есть форма html регистрации.
<form enctype="multipart/form-data" action="register.php" method="post">
name:<input name="name" type="text">
login: <input name="login" type="text">
............
<input type="submit" value="Register!">
</form>

Эта форма отправляет данные в какой-то скрипт( пусть будет register.php) значении $nick, $name, $pass  и т.д. Что делает скрипт? Записывает этих данных в базу данных(на перед созданную таблицу, который состоит из n колонок(имя, пароль, ник и т.д.)).

Форма входа:
Создаешь тоже форму на html(поля nick, pass). Эта форма отправляет данные в скрипт (например login.php). Он принимает данные $nick,$pass и соединяет с СУБД. Там он проверяет: есть ли такой ник с таким паролем? Если нет - False, если есть - True, после чего index.php выдадет скрытый код для не зарегистрированного зарегистрированному. Для того чтобы каждый раз не логиниться следует поработать с Сookies.
<form enctype="multipart/form-data" action="login.php" method="post">
Nick:<input name="nick" type="text">
pass: <input name="pass" type="text">
<input type="submit" value="Go!">
</form>


UPD: Documentation(если "забыл" как это делать  :) ): PHP. Работа с СУБД MyDQL, Method GET and POST


Дякую! Завтра попробую зробити 2 частину. 1 частину, тобто сам порцес реєстрація я написав ... сам. Продовження буде завтра!

firefire

#499
Цитата: Andrii від 17 Січень 2009, 23:08:44
Дякую! Завтра попробую зробити 2 частину. 1 частину, тобто сам порцес реєстрація я написав ... сам. Продовження буде завтра!
Все "Дякую" мне в карму  :%)
Если что-то не получится - обращайся. Я помогу как смогу  ;)
ЗЫ. Ты хоть какую-то книгу по пхп дочитал?  :-[