Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.29;
Скачать: CL | DM;

Вниз

Нужна помощь   Найти похожие ветки 

 
Шишкин Илья ©   (2003-09-18 10:32) [0]

Уже целые сутки ломаю голову. Не понимаю в чём ошибка.

type
TCDPlayer=class(TObject)
Track:string; //Почему нельзя работать с этими переменными?
Drive:string; //Почему нельзя работать с этими переменными?
Volume:string; //Почему нельзя работать с этими переменными?

function Play(CD:string;Track:integer):boolean;
function GetVolume:integer;
function SetVolume(Volume:integer):boolean;
function Stop:boolean;
function GetLength:integer;
function GetPos:integer;
function IsPlaying:boolean;
function IsPaused:boolean;
function Pause:boolean;
function Resume:boolean;
end;

function TCDPlayer.IsPlaying:boolean;
begin
if BASS_ChannelIsActive(CDChannel)=BASS_ACTIVE_PLAYING then Result:=true else Result:=false;
end;

function TCDPlayer.IsPaused:boolean;
begin
if BASS_ChannelIsActive(CDChannel)=BASS_ACTIVE_PAUSED then Result:=true else Result:=false;
end;

function TCDPlayer.Play(CD:string;Track:integer):boolean;
begin
if Length(CD)<2 then
begin
Result:=false;
exit;
end;
if CD[2]<>":" then
begin
Result:=false;
exit;
end;
if BASS_CDInit(PChar(CD),0) then
begin
if BASS_CDInDrive then
begin
if BASS_CDPlay(Track,false,false) then
begin
Result:=true;
CDPlayer.Track:=IntToStr(Track); //Здесь происходит ошибка
CDPlayer.Drive:=CD; //Здесь происходит ошибка
CDPlayer.Volume:="100"; //Здесь происходит ошибка

end;
end
else
begin
Result:=false;
Bass_CDFree;
exit;
end;
end
else
begin
ShowMessage("ERROR");
Result:=false;
Bass_CDFree;
exit;
end;
end;

function TCDPlayer.GetVolume:integer;
begin
Result:=StrToIntDef(CDPlayer.Volume,0);
end;

function TCDPlayer.Pause:boolean;
begin
Result:=BASS_ChannelPause(CDChannel);
end;

function TCDPlayer.Resume:boolean;
begin
Result:=BASS_ChannelResume(CDChannel);
end;

function TCDPlayer.SetVolume(Volume:integer):boolean;
begin
Result:=BASS_ChannelSetAttributes(CDChannel,-1,Volume,-101);
if Result then CDPlayer.Volume:=IntToStr(Volume);
end;

function TCDPlayer.Stop:boolean;
begin
try
BASS_CDFree;
except
Result:=false;
exit;
end;
Result:=true;
end;

function TCdPlayer.GetLength:integer;
begin
Result:=Round(BASS_CDGetTrackLength(StrToInt(CDPlayer.Track))/1000);
end;

function TCdPlayer.GetPos:integer;
begin
Result:=Round(BASS_ChannelBytes2Seconds(CDChannel,BASS_ChannelGetPosition(CDChannel)));
end;


---------------------------------------------------------

var
CDPlayer:TCDPlayer;


Вызываю функцию так: CDPlayer.Play("E:",1);


 
Hooch ©   (2003-09-18 10:38) [1]

CDPlayer.Track:=IntToStr(Track); //Здесь происходит ошибка
CDPlayer.Drive:=CD; //Здесь происходит ошибка
CDPlayer.Volume:="100"; //Здесь происходит ошибка


CDPlayer тут зачем ???


 
Плохиш_   (2003-09-18 10:48) [2]

>Шишкин Илья © (18.09.03 10:32)

А ошибка случаем не "Неизвестная переменная CDPlayer"?

1. Замени на

self.Track:=IntToSt(Track);
self.Drive:=CD;
self.Volume:="100";

2. Никогда, я повторяю НИКОГДА не используй в объектах глобальные переменные


 
Юрий Федоров ©   (2003-09-18 11:08) [3]

Даже без Self, просто
Drive:=CD;
Кстати, поля (Track, Drive) крайне желательно держать в секции private

>>2. Никогда, я повторяю НИКОГДА не используй в объектах >>глобальные переменные

Бывают разные случаи, я бы не был столь категоричен :)))


 
Murad ©   (2003-09-18 11:31) [4]

2Плохиш_
>> Никогда, я повторяю НИКОГДА не используй в объектах
глобальные переменные

Иногда их приходится использлвать, для реализации функциональности похожей на статические переменные в C++
(Т.Е. когда нужно, чтобы когда нужно, чтобы значение какого-то поля выставлялось одновременно всем экземплярам класса, а в Паскале class method есть, а class field нету :(( - через глоб. переменные) Да и вообще, никогда не говори никогда :)))


 
Murad ©   (2003-09-18 11:32) [5]

Пардон, в начале фразы я что-то запутался :))) но думаю суть понятна



Страницы: 1 вся ветка

Текущий архив: 2003.09.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.043 c
14-96339
Zoloto
2003-09-11 22:25
2003.09.29
Обрезает форму


1-96173
alexandr1045
2003-09-18 09:39
2003.09.29
Связь кнопки с .exe файлом (продолжение)


1-96210
niko4543
2003-09-18 09:46
2003.09.29
Число


3-96076
firewal1
2003-08-28 13:12
2003.09.29
Как в операторе INSERT INTO ... записать двоичные данные в BLOB


1-96188
maxXP
2003-09-15 22:25
2003.09.29
Как определить папку работ-го приложения?