CWMFoundation

CWMFoundation 意为 Charlie.Wang Foundation Mini(迷你版)
是作者工作中为方便代码编写,逐渐整理归档的一些代码集。

CWMFoundation – Algorithm

CWMFoundation 意为 Charlie.Wang Foundation Mini(迷你版)

是作者工作中为方便代码编写,逐渐整理归档的一些代码集。

在原有CWFoundation的基础上,去除了大量窗体上的控件,只留下一个Delphi Pas文件的轻量级类。

Algorithm是用来存放算法的类。

//***********************************
//***** CWMFoundation Algorithm ******
//***********************************
{$REGION ' CWMFoundation Algorithm Implementation '}
function TCWAlgorithm.SortWithBuddle(_array: TARR_INT):TARR_INT;
var
  arrLength,i,j,tmp_swap:Integer;
begin
  try
    arrLength := Length(_array);
    for i:=0 to arrLength-1 do
    begin
      for j:=i+1 to arrLength-1 do
      begin
        if _array[i]>=_array[j] then
          begin
            tmp_swap:=_array[i];
            _array[i]:=_array[j];
            _array[j]:=tmp_swap;
          end;
      end;
    end;
  finally
    Result := _array;
  end;
end;
 
function TCWAlgorithm.SortWithShell(_array: TARR_INT):TARR_INT;
var
  arrLength,i,j,k,tmp_swap:Integer;
begin
  try
    arrLength := Length(_array);
    k:=(arrLength div 2);
    while k>0 do
    begin
      Application.ProcessMessages();
      for j:=k to arrLength-1 do
      begin
        tmp_swap:=_array[j];
        i:=j-k;
        while (i>=0) and (_array[i]>=tmp_swap) do
          begin
            _array[i+k]:=_array[i];
            i:=i-k;
          end;
        _array[i+k]:=tmp_swap;
      end;
      k:=k div 2;
    end;
  finally
     Result := _array;
  end;
end;
{$ENDREGION}

 

CWMFoundation – Keyboard

CWMFoundation 意为 Charlie.Wang Foundation Mini(迷你版)

是作者工作中为方便代码编写,逐渐整理归档的一些代码集。

在原有CWFoundation的基础上,去除了大量窗体上的控件,只留下一个Delphi Pas文件的轻量级类。

Keyboard主要用来处理按键,节约代码输入的时间。

//***********************************
//***** CWMFoundation KeyBoard ******
//***********************************
{$REGION ' CWMFoundation KeyBoard '}
function TCWKey.KEY_TO_ASCII(const KeyChar:AnsiChar):Integer;
begin
  try
    Result := Ord(KeyChar);
  except
    Result := 0;
  end;
end;
 
function TCWKey.IFDOWN_SHIFT:Boolean;
begin
  if GetKeyState(VK_SHIFT)<0 then Result:=True else Result:=False;
end;
 
function TCWKey.IFDOWN_ALT:Boolean;
begin
  if GetKeyState(VK_MENU)<0 then Result:=True else Result:=False;
end;
 
function TCWKey.IFDOWN_CTRL:Boolean;
begin
  if GetKeyState(VK_CONTROL)<0 then Result:=True else Result:=False;
end;
 
function TCWKey.IFDOWN_KEY(const KeyChar:AnsiChar):Boolean;
begin
  if GetKeyState(KEY_TO_ASCII(KeyChar))<0 then Result:=True else Result:=False;
end;
 
function TCWKey.IFDOWN_ENTER:Boolean;
begin
  if GetKeyState(VK_RETURN)<0 then Result:=True else Result:=False;
end;
{$ENDREGION}

 

CWMFoundation – Morse

CWMFoundation 意为 Charlie.Wang Foundation Mini(迷你版)

是作者工作中为方便代码编写,逐渐整理归档的一些代码集。

在原有CWFoundation的基础上,去除了大量窗体上的控件,只留下一个Delphi Pas文件的轻量级类。

Morse只是一个双向转换摩斯电码的类。

//***********************************
//***** CWMFoundation Morse ******
//***********************************
{$REGION ' CWMFoundation Morse Implementation '}
function TCWMorse.TransferMORSE(_code: string; isMorse: Boolean):string;
var
 i:Integer;
begin
 CW_MORSE_A[0] := '';
 CW_MORSE_A[1] := '.-';
 CW_MORSE_A[2] := '-...';
 CW_MORSE_A[3] := '-.-.';
 CW_MORSE_A[4] := '-..';
 CW_MORSE_A[5] := '.';
 CW_MORSE_A[6] := '..-.';
 CW_MORSE_A[7] := '--.';
 CW_MORSE_A[8] := '....';
 CW_MORSE_A[9] := '..';
 CW_MORSE_A[10] := '.---';
 CW_MORSE_A[11] := '-.-';
 CW_MORSE_A[12] := '.-..';
 CW_MORSE_A[13] := '--';
 CW_MORSE_A[14] := '-.';
 CW_MORSE_A[15] := '---';
 CW_MORSE_A[16] := '.--.';
 CW_MORSE_A[17] := '--.-';
 CW_MORSE_A[18] := '.-.';
 CW_MORSE_A[19] := '...';
 CW_MORSE_A[20] := '-';
 CW_MORSE_A[21] := '..-';
 CW_MORSE_A[22] := '...-';
 CW_MORSE_A[23] := '.--';
 CW_MORSE_A[24] := '-..-';
 CW_MORSE_A[25] := '-.--';
 CW_MORSE_A[26] := '--..';
 CW_MORSE_A[27] := '-.-..';
 CW_MORSE_A[28] := '--.-.';
 CW_MORSE_A[29] := '----';
 CW_MORSE_A[30] := '.---.';
 CW_MORSE_A[31] := '...-.';
 CW_MORSE_A[32] := '..--';
 Result := ' ';
 if isMorse = True then
 begin
 for i := 0 to Length(CW_MORSE_A)-1 do
 begin
 if CW_MORSE_A[i] = _code then
 begin
 Result := CW_MORSE_B[i];
 Exit;
 end;
 end;
 end else
 begin
 for i := 0 to Length(CW_MORSE_B)-1 do
 begin
 if CW_MORSE_B[i] = _code then
 begin
 Result := CW_MORSE_A[i];
 Exit;
 end;
 end;
 end;
end;
 
function TCWMorse.MorseToString(_morse: string):string;
var
 i:Integer;
 ResultString : string;
begin
 ResultString := '';
 try
 _morse := CWStr.TRIM_SIDES(_morse);
 CWStr.SPLIT_STRING(_morse,CW_SPACE);
 for i := 0 to CW_SPLITSTRING_STRINGLIST.Count-1 do
 begin
 ResultString := ResultString + TransferMORSE(CW_SPLITSTRING_STRINGLIST[i],True);
 end;
 finally
 Result := CWStr.TRIM_ALL_SINGLE(ResultString);
 CW_SPLITSTRING_STRINGLIST.Clear;
 end;
end;
 
function TCWMorse.StringToMorse(_string: string):string;
var
 i:Integer;
 ResultString : string;
begin
 ResultString := '';
 _string := UpperCase(_string);
 try
 for i := 1 to Length(_string) do
 begin
 ResultString := ResultString + TransferMORSE(MidStr(_string,i,1),False) + CW_SPACE;;
 end;
 finally
 Result := CWStr.TRIM_SIDES(ResultString);
 end;
end;
{$ENDREGION}

该代码仍旧会不断更新…

CWMFoundation – Message

CWMFoundation 意为 Charlie.Wang Foundation Mini(迷你版)

是作者工作中为方便代码编写,逐渐整理归档的一些代码集。

在原有CWFoundation的基础上,去除了大量窗体上的控件,只留下一个Delphi Pas文件的轻量级类。

Message类是用来输出不同类型输出文字的,比如直接输出Int类、直接输出到剪贴板等。

[图]

//***********************************
//***** CWMFoundation Message   ******
//***********************************
{$REGION ' CWMFoundation Message Implementation '}
procedure TCWMessage.IM(title: string; content: string);
begin
  Application.MessageBox(PChar(content),PChar(title),MB_OK+MB_ICONASTERISK);
end;
 
procedure TCWMessage.AM(title: string; content: string);
begin
  Application.MessageBox(PChar(content),PChar(title),MB_OK+MB_ICONWARNING);
end;
 
procedure TCWMessage.EM(title: string; content: string);
begin
  Application.MessageBox(PChar(content),PChar(title),MB_OK+MB_ICONERROR);
end;
 
procedure TCWMessage.HM(title: string; content: string);
begin
  Application.MessageBox(PChar(content),PChar(title),MB_HELP);
end;
 
procedure TCWMessage.QM(title: string; content: string);
begin
  Application.MessageBox(PChar(content),PChar(title),MB_OK+MB_ICONQUESTION);
end;
 
procedure TCWMessage.M(content: string);
begin
  ShowMessage(content);
end;
 
procedure TCWMessage.MC(content: string);
begin
  Clipboard.Clear;
  Clipboard.AsText := content;
  M(content);
end;
 
procedure TCWMessage.MI(content: Integer);
begin
  CWMsg.M(IntToStr(content));
end;
 
procedure TCWMessage.MD(content: Double);
begin
  CWMsg.M(FloatToStr(content));
end;
 
procedure TCWMessage.M_INT(content: Integer);
begin
  MI(content);  // same as MI
end;
 
procedure TCWMessage.MB(content: Boolean);
begin
  ShowMessage(BoolToStr(content,True));
end;
 
function TCWMessage.YESNO(title: string; content: string):Boolean;
begin
  if Application.Messagebox(PChar(content),PChar(title),MB_YESNO+MB_IconQuestion) = IDYES then Result := True else Result := False;
end;
 
function TCWMessage.OKCANCEL(title: string; content: string):Boolean;
begin
  if Application.Messagebox(PChar(content),PChar(title),MB_OKCANCEL+MB_IconQuestion) = IDOK then Result := True else Result := False;
end;
{$ENDREGION}

代码还在不断添加和优化中……