Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
Шишкин Илья   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
3-96124
Max_
2003-09-09 13:01
2003.09.29
ADOQuery и Select


3-96086
Nick-From
2003-09-09 23:06
2003.09.29
Не могу создать домен


3-96089
Hawk2
2003-09-09 15:18
2003.09.29
Вставка одним запросом


1-96265
aldapooh
2003-09-17 12:09
2003.09.29
Single Instance


8-96307
a72
2003-06-02 14:41
2003.09.29
Компоненты для векторной графики





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский