编程知识 购物 网址 新闻 笑话 | 软件 日历 阅读 图书馆 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
   -> C++ -> 编程批量删除MP3文件的附加信息 -> 正文阅读

[C++]编程批量删除MP3文件的附加信息

源码:

  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 //---------------------------------------------------------------------------

  C++ 最新文章
关于poin与references
019:别叫,这个大整数已经很简化了!
c++智能指针详解
BZOJ1269: [AHOI2006]文本编辑器editor
洛谷P3835 【模板】可持久化平衡树
洛谷P2925 [USACO08DEC]干草出售Hay For Sa
POJ 2987 Firing
树的重心
第一章 作业7.
【左神算法课】超经典:求两单向链表交点(
上一篇文章      下一篇文章      查看所有文章
加:2017-12-05 23:23:29  更:2017-12-05 23:23:39 
 
360图书馆 软件开发资料 购物精选 新闻资讯 Chinese Culture 龙发科技 开发 中国文化 阅读网 日历 万年历 2020年8日历
2020-8-15 1:32:21
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程知识