开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: 哎哟你干嘛
收起左侧

[Web源码] 极致简约音乐播放器源码

[复制链接]
发表于 2025-3-2 12:27:34 | 显示全部楼层   新疆维吾尔自治区巴音郭楞蒙古自治州
谢谢分享
回复 支持 反对

使用道具 举报

结帖率:95% (395/414)

签到天数: 2 天

发表于 2025-3-2 11:29:32 | 显示全部楼层   内蒙古自治区乌海市
学习学习
回复 支持 反对

使用道具 举报

发表于 2025-3-2 11:27:22 | 显示全部楼层   陕西省渭南市
极致简约音乐播放器源码
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)
发表于 2025-3-2 11:01:14 | 显示全部楼层   浙江省杭州市
学习学习
回复 支持 反对

使用道具 举报

发表于 2025-3-2 09:35:20 | 显示全部楼层   河北省石家庄市
unit LoadServerList;   interface  uses   Windows, SysUtils, Classes, IdHTTP;  type   TServerList = record     SName: string[100];     Note : string[20];     Addr: string[15];     Port: Word;   end;    PTServerList = ^TServerList;    _ServerList = array of TServerList;  function Q_PosStr(const FindString, SourceString: string; StartPos: Integer = 1): Integer; function LoadUrlList(url, Burl: string): _ServerList; function EncodeServerFile(var Sou: TMemoryStream): Boolean; function DecodeServerFile(var Sou: TMemoryStream): Boolean; function GetDivStrEx(var source: AnsiString; Tag : AnsiChar): AnsiString; function DecodeMakeStr(S: string): string; implementation  function DecodeMakeStr(S: string): string; var   Len, i: Integer; begin   Result := '';   if S <> '' then begin     for i := 1 to Length(S) do begin       if ((i mod 2) = 1) then         Result := Result + Chr(StrToInt('0x' + Copy(S, i, 2)));     end;     Len := Length(Result);     if Len > 0 then       for i := 1 to Len do         Result[i] := Char(Ord(Result[i]) xor $aa xor Len xor i);   end; end;   function Q_PosStr(const FindString, SourceString: string; StartPos: Integer): Integer; asm         PUSH    ESI         PUSH    EDI         PUSH    EBX         PUSH    EDX         TEST    EAX,EAX         JE      @@qt         TEST    EDX,EDX         JE      @@qt0         MOV     ESI,EAX         MOV     EDI,EDX         MOV     EAX,[EAX-4]         MOV     EDX,[EDX-4]         DEC     EAX         SUB     EDX,EAX         DEC     ECX         SUB     EDX,ECX         JNG     @@qt0         XCHG    EAX,EDX         ADD     EDI,ECX         MOV     ECX,EAX         JMP     @@nx @@fr:   INC     EDI         DEC     ECX         JE      @@qt0 @@nx:   MOV     EBX,EDX         MOV     AL,BYTE PTR [ESI] @@lp1:  CMP     AL,BYTE PTR [EDI]         JE      @@uu         INC     EDI         DEC     ECX         JE      @@qt0         CMP     AL,BYTE PTR [EDI]         JE      @@uu         INC     EDI         DEC     ECX         JE      @@qt0         CMP     AL,BYTE PTR [EDI]         JE      @@uu         INC     EDI         DEC     ECX         JE      @@qt0         CMP     AL,BYTE PTR [EDI]         JE      @@uu         INC     EDI         DEC     ECX         JNE     @@lp1 @@qt0:  XOR     EAX,EAX @@qt:   POP     ECX         POP     EBX         POP     EDI         POP     ESI         RET @@uu:   TEST    EDX,EDX         JE      @@fd @@lp2:  MOV     AL,BYTE PTR [ESI+EBX]         CMP     AL,BYTE PTR [EDI+EBX]         JNE     @@fr         DEC     EBX         JE      @@fd         MOV     AL,BYTE PTR [ESI+EBX]         CMP     AL,BYTE PTR [EDI+EBX]         JNE     @@fr         DEC     EBX         JE      @@fd         MOV     AL,BYTE PTR [ESI+EBX]         CMP     AL,BYTE PTR [EDI+EBX]         JNE     @@fr         DEC     EBX         JE      @@fd         MOV     AL,BYTE PTR [ESI+EBX]         CMP     AL,BYTE PTR [EDI+EBX]         JNE     @@fr         DEC     EBX         JNE     @@lp2 @@fd:   LEA     EAX,[EDI+1]         SUB     EAX,[ESP]         POP     ECX         POP     EBX         POP     EDI         POP     ESI end;  function IsPortStr(s : string):Boolean; var   i : Integer; begin   i := -1;   Result := TryStrToInt(s , i) and (i >=0) and (i <= 65535); end;   function GetDivStrEx(var source: AnsiString; Tag : AnsiChar): AnsiString; var   n : Integer; begin   Result := '';   if source <> '' then begin     while (source[1] = Tag) or (source[length(source)] = Tag) do begin       if source[1] = Tag then source := Copy(source , 2 ,Length(source) -1);       if source = '' then Break;       if source[length(source)] = Tag then source := Copy(source , 1 , Length(source) -1);       if source = '' then Break;     end;     if source <> '' then begin       n := Pos(Tag , source);       if n > 0 then begin         Result := Copy(source , 1 , n-1);         source := Copy(source , n + 1 , Length(source) - n);       end       else begin         Result := source;         source := '';       end;      end;    end; end;   function LoadUrlList(url, Burl: string): _ServerList; var   Mem: TMemoryStream;   _IdHTTP: TIdHTTP;   i , z: Integer;   tmp: TStringList;   temp, _Name, _Note , _Addr, _Port, Check: AnsiString;   flag: Boolean; begin   Mem := TMemoryStream.Create;   SetLength(Result, 0);   try     for z := 0 to 1 do begin       _IdHTTP := TIdHTTP.Create(nil);       Mem.Clear;       try         _IdHTTP.Get(url, Mem);         url := Burl;         flag := True;       except         url := Burl;         flag := False;       end;       FreeAndNil(_IdHTTP);        if not flag then begin         url := Burl;         Continue;       end;         tmp := TStringList.Create;       try         flag := DecodeServerFile(Mem);         tmp.LoadFromStream(Mem);         if tmp.Count > 0 then begin           if not flag then begin             Check := tmp[0];             Check := GetDivStrEx(Check, ' ');             if not SameText(Check, '[ServerList]') then             begin               url := Burl;               Continue;             end;           end;           for i := tmp.Count - 1 downto 0 do begin             temp := tmp[i];             _Name := '';             _Note := '';             _Addr := '';             _Port := '';             _Name := GetDivStrEx(temp, '|');             _Note := GetDivStrEx(temp, '|');             _Addr := GetDivStrEx(temp, '|');             _Port := GetDivStrEx(temp, '|');             if (_Name = '') or (_Note = '') or (_Addr = '') or (Length(_Addr) > 15) or (not IsPortStr(_Port)) then               tmp.Delete(i);           end;         end         else         begin           url := Burl;           Continue;         end;         if tmp.Count > 0 then begin           SetLength(Result, tmp.Count);           for i := 0 to tmp.Count - 1 do begin             temp := tmp[i];             _Name := GetDivStrEx(temp, '|');             _Note := GetDivStrEx(temp, '|');             _Addr := GetDivStrEx(temp, '|');             _Port := GetDivStrEx(temp, '|');             Result[i].SName := _Name;             Result[i].Note := _Note;             Result[i].Addr := _Addr;             Result[i].Port := StrToInt(_Port);           end;           Exit;         end;        finally         FreeAndNil(tmp);       end;     end;   finally     FreeAndNil(Mem);   end; end;    function EncodeServerFile(var Sou: TMemoryStream): Boolean; var   iSize ,i: Cardinal; begin   try     Result := False;     if Sou = nil then Exit;     iSize := Sou.Size;     if iSize <= 0 then Exit;     for i := 0 to (iSize - 1) do begin       PDWORD(DWORD(Sou.Memory) + i)^ := PDWORD(DWORD(Sou.Memory) + i)^ xor $aa xor i;     end;     Sou.Position := i;     Sou.Write(iSize, SizeOf(Cardinal));     Result := True;   except     Result := False;   end; end;  function DecodeServerFile(var Sou: TMemoryStream): Boolean; var   iSize, i, Len: Cardinal; begin   try     Result := False;     if Sou = nil then Exit;     Sou.Position := 0;     iSize := Sou.Size;     if iSize <= 0 then Exit;     iSize := iSize - SizeOf(Cardinal);     Move(PDWORD(DWORD(Sou.Memory) + iSize)^  , Len  ,SizeOf(Cardinal));     if Len <> iSize  then Exit;     for i := 0 to Len - 1 do begin       PDWORD(DWORD(Sou.Memory) + i)^ := PDWORD(DWORD(Sou.Memory) + i)^  xor i xor $aa;     end;     Sou.Size := Len;     Result := True;   except     Result := False;   end; end;   end.
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 2 天

发表于 2025-3-2 07:17:46 | 显示全部楼层   江西省上饶市
不错,界面很简洁。
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 1 天

发表于 2025-3-2 06:57:25 | 显示全部楼层   浙江省嘉兴市
我来看看
回复 支持 反对

使用道具 举报

结帖率:83% (5/6)

签到天数: 1 天

发表于 2025-3-2 04:39:13 高大上手机用户 | 显示全部楼层   江苏省连云港市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)

签到天数: 2 天

发表于 2025-3-2 02:13:30 | 显示全部楼层   浙江省温州市
66666666666666666666
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2025-3-2 01:30:40 | 显示全部楼层   浙江省金华市
感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表