delphi4arab منتديات دلفي للعرب

نسخة كاملة : [تمرين ]تضمين ملف صوتي mp3 بتطبيق دلفي
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3 4 5 6 7
السلام عليكم أخي كارجيم
عفوا نسيت هذا الباس
تم رفع الملف من جديد من اجلك رغم ان مكتبة newac اشك في انها لا تتحمل الملفات الصوتية الطويلة
و انا الان بصدد محاولة ادخال الصوت عن طريق ملفات wav دون استخدام مكتبات اضافية لكن تنقصني اكواد الاستئناف
الملف الجديد و معه كل الملفات اخي تفضل
PHP كود :
http://www.mediafire.com/?d7b2c23n73dk74h 
لك من كل الشكر والتقدير
تجنب ان ترفع الملف التنفيذي
لان حجمة كبير يكفي السورس
تحياتي
[صورة: picture0002p.png]
الاخ TF6m
النتيجة بدون صوت
والمثال صعب!!

هل من توضيح فيما يخص المثال المرفق
اي تعليقات حول اسباب استخدام الكود
تحياتي
PHP كود :
function MainDlgFunc(hWnd: hWnd; uMSG: Dword; wParam: wParam; lParam: lParam)
  : 
Bool; stdcall;

begin
  Result 
:= True;
  case 
uMSG of
    WM_INITDIALOG
:
      
begin
        CheckRadioButton
(hWnd, 12, 13, 12);
        
BoxedAppSDK_Init;
        
hFile := BoxedAppSDK_CreateVirtualFile(PAnsiChar('fox.mp3'),
          
// MyMP3.mp3  fox
          
GENERIC_WRITE, FILE_SHARE_READ, nil, CREATE_NEW, 0, 0);
        
HandleStream := THandleStream.Create(hFile);
        
ResourceStream := TResourceStream.Create(0, 'intro', RT_RCDATA);
        
HandleStream.CopyFrom(ResourceStream, ResourceStream.Size);
      
end;
    
WM_CLOSE:
      
EndDialog(hWnd, 0);

    
WM_DESTROY:
      
PostQuitMessage(0);

    
WM_COMMAND:
      
begin
        
case wParam of
          11
:
            
begin
              
if IsDlgButtonChecked(hWnd, 12) = BST_CHECKED then
              begin
                _FreeAll
;
                if 
not FSOUND_Init(44100, 32, 0) then
                  MessageBox
(0, 'Error initializing audio!', nil, 0);
                
hMod := FSOUND_Stream_Open('fox.mp3', 1, 0, 0);
                if (
hMod = nil) then
                  MessageBox
(0, 'Could not create user stream', nil, 0);
                if 
FSOUND_Stream_Play(0, hMod) < 0 then
                  MessageBox
(0, 'Error playing music!', nil, 0);
              
end;
              if 
IsDlgButtonChecked(hWnd, 13) = BST_CHECKED then
              begin
                _FreeAll
;
                if 
not BASS_Init(-1, 44100, 0, 0, nil) then
                  MessageBox
(0, 'Error initializing audio!', nil, 0);
                
mods := BASS_StreamCreateFile(false, Pchar('fox.mp3'), 0, 0,
                  
BASS_MUSIC_RAMP);
                if (
mods = 0) then
                  MessageBox
(0, 'Could not create user stream', nil, 0);
                if 
not BASS_ChannelPlay(mods, True) then
                  MessageBox
(0, 'Error playing music!', nil, 0);
              
end;
            
end;
        
end;
      
end
  
else
    
Result := false;
  
end;
end; 
السلام عليكم

ولما التعب

بأمكاننا استخدام نسخة محمولة عن طريق برنامج وين رار او غيره من البرامج
ينتج عن ذلك ملف تنفيذي يضم ديلفي + mp3
مثال

http://www.4shared.com/file/qi5ksbsB/mp3_portabol.html

استخدمت هذه الترميزة في برنامج الرار
ونسطتع وضع عدد كبير من ملفات mp3

إقتباس :Setup=Program Name.exe
TempMode
Silent=1
Overwrite=1
المحجوب كتب :ولما التعب
بأمكاننا استخدام نسخة محمولة عن طريق برنامج وين رار او غيره من البرامج
التعب لازم Big Grin التمرين وضع لتفكر وتتعلم شيئ جديد
استخدام WinRAR يوجب استخراج الملفات بمكان ما بالقرص ثم تنفيذ برنامج
اقدم من WinRAR هناك Microsoft's SFX Cabinet
استعملت هذا البرنامج ; وهذا للتحوبل الى wav
السهل الممتنع Big Grin
PHP كود :
procedure Play(ms:TMemoryStream);
begin
try
sndPlaySound(ms.Memory, SND_ASYNC or SND_MEMORY);
finally
FreeAndNil(ms);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Play
(basit_001_ToStream)
end; 
PHP كود :
Unit basit_001;

interface
Uses Windows, Classes;


Const
basit_001_Szie=340681;


function 
basit_001_ToStream:TMemoryStream;

Const
basit_001_:Array[0..basit_001_Szie] of Byte=(
   $
52,$49,$46,$46,$C1,$32,$05,$00,$57,$41,$56,$45,$66,$6D,$74,$20,$10,$00,.....

   $
00);

implementation


function basit_001_ToStream:TMemoryStream;
begin
  Result
:= TMemoryStream.Create;
  
Result.Write(basit_001_,basit_001_Szie);
  
Result.Position:= 0;
End; 
onexite كتب :استعملت هذا البرنامج ; وهذا للتحوبل الى wav
حل صحيح، مع ان الفكرة تم كتابتها منذ اول رد بالموضوع Rolleyes
الصفحات : 1 2 3 4 5 6 7