编程批量删除MP3文件的附加信息
2018-06-17 21:30:52来源:未知 阅读 ()
源码:
1 //--------------------------------------------------------------------------- 2 3 #include <vcl.h> 4 #pragma hdrstop 5 6 #include "Unit1.h" 7 //--------------------------------------------------------------------------- 8 #pragma package(smart_init) 9 #pragma resource "*.dfm" 10 TForm1 *Form1; 11 //--------------------------------------------------------------------------- 12 __fastcall TForm1::TForm1(TComponent* Owner) 13 : TForm(Owner) 14 { 15 } 16 //--------------------------------------------------------------------------- 17 void __fastcall TForm1::Button1Click(TObject *Sender) 18 { 19 if(OpenDialog1->Execute()) 20 { 21 //OpenDialog1->Options.Clear(); 22 //OpenDialog1->Options << ofAllowMultiSelect << ofFileMustExist; 23 24 int count = OpenDialog1->Files->Count; 25 TStringList *files = new TStringList; 26 files->Assign(OpenDialog1->Files); 27 28 for(int i=0;i<count;i++) 29 { 30 ClearFileInfo(files->Strings[i]); 31 Memo1->Lines->Add(files->Strings[i]); 32 } 33 } 34 ShowMessage("文件修改完成。"); 35 } 36 //--------------------------------------------------------------------------- 37 void __fastcall TForm1::ClearFileInfo(String fileName) 38 { 39 int fileHandle; 40 int fileLength; 41 unsigned int readLength; 42 char *buffer; 43 44 fileHandle = FileOpen(fileName,fmOpenReadWrite); 45 fileLength = FileSeek(fileHandle,0,2); 46 FileSeek(fileHandle,0,0); 47 buffer = new char[fileLength+1]; 48 readLength = FileRead(fileHandle,buffer,fileLength); 49 50 if(buffer[0]!='I' || buffer[1]!='D' || buffer[2]!='3') 51 { 52 ShowMessage("不是ID3 v1格式文件。"); 53 return; 54 } 55 //如果是 2.3版本,就把后面的0xF0字节清零 56 if(buffer[3]==0x03) 57 { 58 for(int i=0;i<0xf0;i++) 59 { 60 buffer[4+i] = '\0'; 61 } 62 } 63 64 int tmp = fileLength - 128; 65 if(String(buffer[tmp])!='T' ||String(buffer[tmp+1])!='A' ||String(buffer[tmp+2])!='G') 66 { 67 ShowMessage("没有找到‘TAG’标志。"); 68 return; 69 } 70 tmp += 3; 71 for(int i=0;i<125;i++) 72 { 73 buffer[tmp+i] = '\0'; 74 } 75 FileSeek(fileHandle,0,0); 76 readLength = 0; 77 readLength = FileWrite(fileHandle,buffer,fileLength); 78 if(readLength == -1) 79 { 80 ShowMessage("写入失败!"); 81 return; 82 } 83 84 85 /* 86 char drive[MAXDRIVE]; //驱动器名 87 char dir[MAXDIR]; //目录,包括前后反斜杠 88 char file[MAXFILE]; //文件主名 89 char ext[MAXEXT]; //文件扩展名,包括前面的 点 90 int flags; 91 92 93 String s = OpenDialog1->FileName; 94 flags=fnsplit(s.c_str(),drive,dir,file,ext); 95 if(flags & FILENAME) 96 { 97 s= String(file); //主文件名 98 } 99 */ 100 FileClose(fileHandle); 101 delete [] buffer; 102 } 103 //---------------------------------------------------------------------------
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C代做 C++代做 C++编程代做 C++程序代做 2020-04-29
- 快速批量将B站 BV 号更改为 AV 号 - BTA 2020-04-08
- 第七章 2.泛型编程(模板) 2020-04-04
- linux环境下的时间编程 2020-03-27
- C、C++ 标准输入重定向 & 万能头 - 编程技巧 2020-03-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash