Files
package-zearch-temp/backup/main.pas
Indrajith K L 6a1d80d3b8 Implements Module Player working in Form
* Implements Embedding .xm music in Final Application
2025-06-02 15:15:16 +05:30

111 lines
2.4 KiB
ObjectPascal

unit main;
{$mode objfpc}{$H+}
{$R music.res}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
ComCtrls, ExtendedTabControls, fphttpclient, opensslsockets, fpjson,
jsonparser, ThreadUnit, uos, uos_portaudio, uos_flat, uos_libxmp, Windows;
type
{ TForm1 }
TForm1 = class(TForm)
BtnSearch: TButton;
ExtendedTabControl1: TExtendedTabControl;
ExtendedTabToolbar1: TExtendedTabToolbar;
Label1: TLabel;
Label2: TLabel;
memoTest: TMemo;
TxtBoxSearch: TEdit;
lblSearch: TLabel;
TabControl1: TTabControl;
procedure BtnSearchClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TabControl1Change(Sender: TObject);
procedure TxtBoxSearchChange(Sender: TObject);
private
public
end;
var
Form1: TForm1;
Client: TFPHTTPClient;
Response: string;
PackageName: string;
jData: TJSONData;
packageData: TJSONObject;
test1: ThreadClass;
ResStream: TResourceStream;
implementation
{$R *.lfm}
{ TForm1 }
function ExtractResourceToTempFile(const ResName: string): string;
var
ResStream: TResourceStream;
TempPath, TempFileName: string;
begin
TempPath := GetTempDir;
TempFileName := TempPath + '5f64126c-1f61-4e65-8250-4a7835d2f155';
ResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
try
ResStream.SaveToFile(TempFileName);
finally
ResStream.Free;
end;
Result := TempFileName;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
BtnSearch.Enabled := False;
//loonie_mifue.xm
uos_LoadLib( pchar('LibPortaudio-64.dll'), nil, nil, nil, nil, nil, pchar('libxmp-64.dll'));
uos_CreatePlayer( 0 );
uos_AddIntoDevOut( 0 );
uos_AddFromFile( 0, PChar(ExtractResourceToTempFile('LOONIEMUSIC')));
uos_Play(0);
end;
procedure TForm1.BtnSearchClick(Sender: TObject);
begin
PackageName := TxtBoxSearch.Text;
Client := TFPHTTPClient.Create(nil);
try
test1 := ThreadClass.create();
Response := Client.Get(Concat('https://registry.npmjs.org/', PackageName));
jData := GetJSON(Response);
packageData := jData as TJSONObject;
memoTest.Lines.Text := jData.FormatJSON;
finally
Client.Free;
end;
end;
procedure TForm1.TabControl1Change(Sender: TObject);
begin
end;
procedure TForm1.TxtBoxSearchChange(Sender: TObject);
begin
if Length(TxtBoxSearch.Text) > 1 then
BtnSearch.Enabled := True
else
BtnSearch.Enabled := False;
end;
end.
uos_free;