有時候要將Perl程式給別人使用,但對方又沒裝Perl Interpreter,就要把PL檔案轉換成EXE檔比較通用。在Perl中現在可以使用Free的套件"App::Packer::PAR",就能轉換出EXE執行檔,但一個小程式也會有4MBytes以上的大小,且啟動速度會比較慢一點。

bagatelles 發表在 痞客邦 留言(0) 人氣()

1. 首先到嘴砲論壇討論區下載檔案

網頁連結:http://www.mobile01.com/topicdetail.php?f=248&t=3525141&r=2&last=47686132

bagatelles 發表在 痞客邦 留言(0) 人氣()

# 將JPEG, RAW, TIFF三個目錄同步
# 2013/12/28加上checkDirectoryExist,修正問題

use strict;
use File::Copy;
use File::Basename;
use Time::HiRes qw(gettimeofday);
use 5.010;

my $t0 = gettimeofday;
my $DestRAW    = "NEF/";
my $DestJPEG   = "JPEG/";
my $DestTIFF   = "TIFF/";
my $DelFolder  = "_del/";

#檢查目錄是否存在
&checkDirectoryExist($DestRAW, $DestJPEG, $DestTIFF);

chdir $DestJPEG;
my @fileJPG = glob "*.JPG";
chdir "..";
chdir $DestRAW;
my @fileRAW = glob "*.NEF";
chdir "..";
chdir $DestTIFF;
my @fileTIF = glob "*.TIF";
chdir "..";

###############################################################################

mkdir $DelFolder;

#處理JPEG與RAW配對
&moveFile($DestJPEG, $DestRAW, $DelFolder, @fileJPG);
&moveFile($DestRAW, $DestJPEG, $DelFolder, @fileRAW);

#處理JPEG與TIFF配對
&moveFile($DestJPEG, $DestTIFF, $DelFolder, @fileJPG);
&moveFile($DestTIFF, $DestJPEG, $DelFolder, @fileTIF);

#處理JPEG與RAW配對
&moveFile($DestJPEG, $DestRAW, $DelFolder, @fileJPG);
&moveFile($DestRAW, $DestJPEG, $DelFolder, @fileRAW);

my $t1 = gettimeofday;
printf("Time: %3.3f sec\r\n", $t1 - $t0);

system("pause");

sub moveFile() {
    for (3..$#_) {
        my $src = $_[1].uc( $_[$_] );

        if ( $_[0] eq $DestJPEG && $_[1] eq $DestRAW) {
            $src =~ s/\.JPG/\.NEF/gi;
        } elsif ( $_[0] eq $DestRAW && $_[1] eq $DestJPEG) {
            $src =~ s/\.NEF/\.JPG/gi;
        } elsif ( $_[0] eq $DestJPEG && $_[1] eq $DestTIFF) {
            $src =~ s/\.JPG/\.TIF/gi;
        } elsif ( $_[0] eq $DestTIFF && $_[1] eq $DestJPEG) {
            $src =~ s/\.TIF/\.JPG/gi;
        }

        #say $src;

        if ( !-e $src ) {
            my $dest = $_[2].$_[$_];
            say "Moving file: ".$_[0].$_[$_].' to '.$dest;
            move($_[0].$_[$_], $dest) if (-e $_[0].$_[$_]);
        }
    }
}

sub checkDirectoryExist {
    for(@_) {
        if(!-e $_) {
            say "Not found \"$_\"";
            die;
        }
    }
}


bagatelles 發表在 痞客邦 留言(0) 人氣()

1. 載入圖片後,再按滑鼠右鍵一次,會出現選擇解析度,選擇「原本大小」就可以下載原圖,圖片顯示後就可以「另存新檔」了。

flickr_download_01.png  

bagatelles 發表在 痞客邦 留言(0) 人氣()

TP-Link WR1043ND分享器,用Google Chrome或者Firefox開大量連線(40個網頁以上)後,會自己斷線。更新技術支援推薦的韌體後,有一點改善可以連開八十個了,但還是不太穩。

 

bagatelles 發表在 痞客邦 留言(0) 人氣()

要使用git產生一堆垃圾信,找了一下需要一些方法組合起來。

 

bagatelles 發表在 痞客邦 留言(0) 人氣()

看到有個文章可以嘗試看看

https://forum.suse.org.cn/viewtopic.php?f=2&t=1139

bagatelles 發表在 痞客邦 留言(0) 人氣()


blat home

bagatelles 發表在 痞客邦 留言(0) 人氣()

看到有人寫的cygwin小技巧。

[Cygwin] 用cygstart啟動文件檔案

bagatelles 發表在 痞客邦 留言(0) 人氣()

首先到

https://code.google.com/p/git-core/downloads/list

bagatelles 發表在 痞客邦 留言(0) 人氣()

procedure BenchmarkFileStream(AFile: string);
  var
    I, Position, PackageCount: cardinal;
    FS: TFileStream;
    Buffer: byte;
    T0: double;
  begin
    T0 := Now;
    Buffer := 0;
    try
      FS := TFileStream.Create(AFile, fmOpenRead);
      PackageCount := FS.Size div 188;

      if PackageCount > 0 then
        for I := 0 to PackageCount - 1 do
        begin
          try
            FS.Position := I * 188;
            FS.ReadBuffer(Buffer, 1);            
          except
            on E: Exception do
              WriteLn('Exception: ' + E.Message);
          end;
        end
    finally
      FS.Free;
    end;
    WriteLn('FileStream Time: ' + IntToStr(MilliSecondsBetween(T0, Now)));
  end;

  procedure BenchmarkBufferIO(AFile: string);
  var
    I, Position, PackageCount: cardinal;
    Buffer: byte;
    T0: double;
    MyFile: file;
    NumberRead: word;
  begin
    T0 := Now;
    Buffer := 0;
    try
      AssignFile(MyFile, AFile);
      Reset(MyFile, 1);
      PackageCount := FileSize(MyFile) div 188;

      if PackageCount > 0 then
        for I := 0 to PackageCount - 1 do
        begin
          try
            Seek(MyFile, I * 188);
            BlockRead(MyFile, Buffer, SizeOf(Buffer), NumberRead);            
          except
            on E: Exception do
              WriteLn('Exception: ' + E.Message);
          end;
        end
    finally
      Close(MyFile);
    end;
    WriteLn('BufferIO Time: ' + IntToStr(MilliSecondsBetween(T0, Now)));
  end;

  procedure BenchmarkFileHandle(AFile: string);
  var
    FileHandle: integer;
    I, PackageCount: cardinal;
    Buffer: byte;
    T0: double;
    MyFile: file;
  begin
    T0 := Now;
    Buffer := 0;
    try
      AssignFile(MyFile, AFile);
      Reset(MyFile, 1);
      PackageCount := FileSize(MyFile) div 188;
      Close(MyFile);

      FileHandle := FileOpen(AFile, fmOpenRead);
      Filemode := fmOpenRead;

      if PackAgeCount > 0 then
        for I := 0 to PackageCount - 1 do
        begin
          try
            FileSeek(FileHandle, I * 188, 0);
            FileRead(FileHandle, Buffer, SizeOf(Buffer));            
          except
            on E: Exception do
              WriteLn('Exception: ' + E.Message);
          end;
        end
    finally
      FileClose(FileHandle);
    end;
    WriteLn('FileHandle Time: ' + IntToStr(MilliSecondsBetween(T0, Now)));
  end;

bagatelles 發表在 痞客邦 留言(0) 人氣()

ComboBox1.ItemIndex:=ComboBox1.Perform(CB_FINDSTRING, -1, LongInt(PChar('要找的字')));


bagatelles 發表在 痞客邦 留言(0) 人氣()

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.imgTestClick(Sender: TObject);
begin
  MessageDlg('Test Timage event', mtInformation, [mbOK], 0);
end;

procedure testCustomEvent;
var
  img: TImage;
begin
  img := TImage.Create(Form1); // 建立TImage物件
  img.Parent := Form1; // 顯示在Form上
  img.Top := 0; // 放在左上角
  img.Left := 0;
  // 指定自訂事件,如果是大量建立注意不要指定Name屬性,沒設定好自訂事件會編譯錯誤
  img.OnClick := Form1.btnTestClick;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // 建立物件前的元件數
  ShowMessage(IntToStr(Self.ComponentCount));
  testCustomEvent;
  // 建立物件後的元件數
  ShowMessage(IntToStr(Self.ComponentCount));
end;

end.

bagatelles 發表在 痞客邦 留言(0) 人氣()

Source: http://delphi.ktop.com.tw/board.php?cid=16&fid=108&tid=23846

bagatelles 發表在 痞客邦 留言(0) 人氣()


bagatelles 發表在 痞客邦 留言(0) 人氣()