Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2010, 16:55   #1
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию создание Cd-playera

Не знаю в чем дело ((

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MPlayer,MMSystem, Grids, ComCtrls, StdCtrls, ExtCtrls;

  const
WM_SCANCD=WM_USER+1;
WM_UNKNOWNCD=WM_User+2;

type
  TPlayerStatus=(noDisk,InsertingDisk,Played,Paused,Stopped);
  TMPForm = class(TForm)
    Player: TMediaPlayer;
    Button1: TButton;
    ProgressBar: TProgressBar;
    Author: TLabel;
    Album: TLabel;
    Status: TStatusBar;
    Songs: TStringGrid;
    Timer1: TTimer;
    Timer2: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);

  private
    { Private declarations }

  Trk,Min,Sec:word;

  CurStatus:TPlayerStatus;
  procedure ScanCD(var Msg:TMessage); message WM_SCANCD;
  procedure UnknownCD(var Msg:TMessage); message WM_UNKNOWNCD;


  procedure ClearSongsList;
  procedure EmptyIndicat;
  procedure InitProgressBar;

  public
    { Public declarations }
    procedure AddSongsToList(Sng:TStringGrid);
  end;

var
  MPForm: TMPForm;
  CD:TStringList;

implementation

{$R *.dfm}


procedure TMPForm.ClearSongsList;
begin
with Songs do
begin
RowCount:=1; Cells[0,0]:=''; Cells[1,0]:=''; Cells[2,0]:='';
end;
Author.Caption:='';
 Album.Caption:='';
end;

Procedure TMPForm.EmptyIndicat;
begin
Status.Panels[1].Text:='00:00';
Status.Panels[0].Text:='00';
Status.Panels[2].Text:='';
ProgressBar.Position:=0; ProgressBar.Max:=100;
end;

Procedure TMPForm.InitProgressBar;
var Len:Longint;
begin
with Player, ProgressBar do
if (StartPos>0) AND (startPos<=Tracks) then
begin
Len:=TrackLength[StartPos]; Position:=0;
Max:=MCI_MSF_MINUTE(Len)*60+MCI_MSF_SECOND(Len);

Status.Panels[2].Text:=Songs.Cells[2,StartPos-1];
end;
end;

procedure TMPForm.Button1Click(Sender: TObject);
begin
close;
end;

procedure TMPForm.Timer2Timer(Sender: TObject);
begin
with Player,Status do
begin
Trk:=MCI_TMSF_TRACK(Position);
Min:=MCI_TMSF_MINUTE(Position);
Sec:=MCI_TMSF_SECOND(Position);
//Законьчилась одна песня и началась другая
if (Min=0) AND (Sec=0) AND (Mode=mpPlaying) then
begin InitProgressBar; Songs.Row:=Trk-1; end;
ProgressBar.Position:=Min*60+Sec;
//инфа в панели
Panels[0].Text:=Format('%.2d',[Trk]);
Panels[1].Text:=Format('%.2d:%.2d',[Min,Sec]);
end;

  procedure  TMPForm.AddSongsToList(Sng:TStringGrid);
  var I:longint; M,S:word;
  begin
  with Sng do
  begin
  //Установить кол-во строк в Sng кол-ву треков в CD
  RowCount:=Player.Tracks;
  //Для каждого трека
  for I:=1 to Player.Tracks do
  begin
  //число минут секунд
  M:=MCI_MSF_MINUTE(Player.TrackLength[I]);
  S:=MCI_MSF_SECOND(Player.TrackLength[I]);
  Cells[0,I-1]:=Format('%.2d',[I]);
  Cells[1,I-1]:=Format('%.2d:%.2d',[M,S]);
  Cells[2,I-1]:='';
  Row:=0;
  end;
  end;


  Procedure TMPForm.ScanCD(var Msg:TMessage);
  begin end;

  Procedure TMPForm.UnknownCD(var Msg:TMessage);
  begin end;

procedure TMPForm.Timer1Timer(Sender: TObject);
begin
with Player, Status do
case Mode of
mpOpen:CurStatus:=NoDisk;  //открыт нет диска
mpStopped: if CurStatus=NoDisk then   //диск есть но не играет
CurStatus:=InsertingDisk
else if CurStatus <> Paused then
CurStatus:=Stopped;
mpPlaying: begin //играет
CurStatus:=Played;
if Songs.RowCount=1 then
AddSongsToList(Songs);
end;
end;

//активизировать 2 таймер если есть диск

Timer2.Enabled:=CurStatus<>NoDisk;
case CurStatus of
NoDisk:begin
ClearSongsList;
EmptyIndicat;
end;
InsertingDisk:begin
AddSongsToList(songs);
SendMessage(Handle, WM_SCANCD,0,0);
end;
end;

 end;
end.
При компиляции ошибка

на 2 процедуры
procedure TMPForm.AddSongsToList(Sng:TStringG rid);
Procedure TMPForm.ScanCD(var Msg:TMessage);
Изображения
Тип файла: jpg error.JPG (11.9 Кб, 23 просмотров)
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Старый 14.09.2010, 17:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Procedure TMPForm.ScanCD(var Msg:TMessage);
procedure TMPForm.AddSongsToList(Sng:TStringG rid);
Перед ними END; поставь
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2010, 17:00   #3
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

всем спасибо уже разобрался
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание ОС levinter Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 52 21.04.2012 20:53
Создание ОС misher Операционные системы общие вопросы 2 17.07.2010 00:32
Создание архива Aндрей Помощь студентам 1 28.02.2009 02:35
Создание формы Mylene79 Microsoft Office Excel 7 25.02.2009 13:29
Создание архиватора на С++ AlexXXxl Общие вопросы C/C++ 6 20.01.2009 19:00