亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如下圖) 哪里有錯呢?

如下圖) 哪里有錯呢?

C
拉莫斯之舞 2022-12-16 17:13:14
目的:一個音樂播放器,通過點擊IDC_BUTTONOPEN按鈕打開文件并播放文件,通過IDC_BUTTONPAUSE按鈕暫停播放,使用mcisengstring函數;問題:當我點擊播放按鈕并選擇Mp3文件,可以正常播放并顯示其完整路徑;但是我在點擊暫停按鈕希望暫停播放并顯示完整路徑時,顯示內容就對了(如下圖);哪里有錯呢?void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify){switch(id){TCHAR long_path[MAX_PATH],short_path[MAX_PATH],cmd[MAX_PATH+15],songname[FILE_NAME];//打開文件case IDC_BUTTONOPEN:{//初始化打開DlgOPENFILENAME ofn;TCHAR szFile[MAX_PATH];//char szFile[MAX_PATH];定義一個長度為MAX_PATH的char數組。//MAX_PATH是系統定義的一個宏,260。Windows操作系統文件路徑的 最大長度。ZeroMemory(&ofn,sizeof(ofn));//memset 使用前將其成員(內存)清零是個好習慣ofn.lStructSize = sizeof(ofn);ofn.lpstrFile = szFile;ofn.lpstrFile[0] = TEXT('\0');ofn.nMaxFile = sizeof(szFile);ofn.lpstrFilter = TEXT("ALL\0*.*\0mp3\0*.mp3\0wma\0*.wma\0");ofn.nFilterIndex = 2; //默認使用mp3作為過濾器ofn.lpstrFileTitle = NULL;ofn.nMaxFileTitle = 0;ofn.lpstrInitialDir = NULL;ofn.hwndOwner = hwnd;//ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;if (GetOpenFileName(&ofn)) //getopenfilename()返回值是BOOL類型,點確定返回TRUE;點取消返回FALSE;{GetShortPathName(szFile,short_path,sizeof(short_path));wsprintf(cmd,"play %s",short_path);mciSendString(cmd,"",0,NULL);//顯示當前播放歌曲名字(不含絕對路徑)GetFileTitle(szFile,songname,FILE_NAME);SetDlgItemText(hwnd,IDC_EDITMUSICNAME,songname);//*MessageBox(hwnd,szFile,TEXT("目錄1"),MB_OK);//顯示選取文件 的完整路徑;//*/} }break;//暫停case IDC_BUTTONPAUSE:{//szfile內容不對GetDlgItemText(hwnd,IDC_EDITMUSICNAME,songname,sizeof(songname));// wsprintf(cmd,"pause %s",long_path);MessageBox(hwnd,long_path,TEXT("目錄2"),MB_OK);// mciSendString(cmd,0,0,NULL);}break;default:break;}}
查看完整描述

1 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

對于這個問題,我在我的軟件中采用求ASC碼值的方法,將每一位的ASC碼值加起來,再case of,(因為我們事先知道具體的字符串,要不然,您怎么比較呢?)
我做的例子的unit1窗體如下:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i,j,k:integer;
begin
s := Edit1.Text;
j := length(s);
i :=0;
for k :=1 to j do
i := i ord(s[k]);

case i of
97:messagebox(0,'50','50',mb_ok);{假設為a 97}
98:messagebox(0,'51','51',mb_ok);{假設為b 97}

{常數N:語句N
...
}
else caption:=inttostr(i);

end;
end;

end.
-----------------------------------------------
unit1窗體中,就一個組件,ord()函數是求字符的原始值 ord(s[k]),就是ASC碼


 


查看完整回答
反對 回復 2022-12-18
  • 1 回答
  • 0 關注
  • 132 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號