Mar 18
C# Code Copy Code To Clipboard
  1. Thread myThread = new Thread(new ThreadStart(delegate { myThreadAction(Param1, Param2, Param3); }));   
      
  2. myThread.Start();   

很简单吧

Tags: , ,
Mar 18

今天是3/18,这算是补上之前没写的.

地下室装修,通常的步骤是管道-->电线-->室内装修.所以管道施工(PLUMBING)是第一道步骤.

管道施工分为上水管和下水管,上水管就是冷热水管,下水管就是排水系统.在装修之前,我就想象过管道应该怎么安装,因为在预留的卫生间地表,除了一个马桶下水口外看不到浴缸和台盆的下水口.后来在报申请时才被告知说那个铁皮下面应该是浴缸的下水口.这样就省了我不少的心思,原来以为没有浴缸下水口时,甚至打算租一台混凝土切割机来自己排下水管的.

图:地下室的铁皮盖,网上问过别人,都不知道这会是什么.

正方的铁皮盖四边都有个折弯的小铁片压着用以固定,用螺丝刀撬开后很容易地移走铁片,却发现这下面是一堆乱七八糟的水泥块,下方是黄沙和石子,居然就没看到什么预留的管道,难道是场空欢喜?

不经意间才发现,原来那一堆水泥下面居然就是一个预留管道口!还记得我这次换的压缩机带的电凿么,正好用在这个地方,很轻松地,就把那些水泥击碎清除,用起来的确比较顺手.下图后方可见清除水泥块后露出的管道口.

HUSKY 13GAL压缩机:

还有些工作要做的,等补拍了照片再表.

Mar 17

WRT310N V2 升级DD-WRT 不指定

kcao , 09:42 , 技术 , 评论(0) , 引用(0) , 阅读(6297) , Via 本站原创

1. 先根据DDWRT官网上的方法,用30-30-30方式RESET路由器后刷DDWRT,但都报错说文件非法,奇怪,再用LINKSYS的界面升级DD-WRT MINI. 先想升级DD-WRT的STD,但是说不行,升级FAILED. 所以只能用MINI进行升级, UPLOAD SUCCESSFUL以后,过了很久网页变为不可用,等3分钟.

2. 再开机,发现糟糕.LED灯只有连接的3号网口亮,连POWER灯都灭了.计算机PING 192.168.1.1不通,改计算机IP地址为192.168.1.100后PING也不通.机器变砖...哭...

3. 用30-30-30方式RESET路由器,还好这界面还是有的.去LINKSYS官网下载了原厂固件,用此界面刷入.成功.还好,机器回生了.

4. 仔细查看后发现,原来刷入的DDWRT是给V1版的WRT310N的,应该是这个原因导致的失败,继续下载最新版的DDWRT,注意是要给V2版用的,最新的是2011年2月编译的SP2版,用FTP可以在DDWRT官网下载到.

5. 在LINKSYS的界面中刷DDWRT,继续出失败消息"FAILED""FAILED"...下载了老的SP1稳定版也是一样失败.用30-30-30 RESET路由器后刷,报错不是合法的IMAGE.刷DDWRT不成功.郁闷.

6. 停止使用IE,改用CHROME打开LINKSYS界面刷DDWRT,用SP2的最新编译的MINI版...成功了!

7. 想偷懒把原来WRT54GL中的配置文件导出再导入到WRT310N中,结果又一次导致机器变砖.看来只能自己手动配置了.

8. 再用30-30-30方式后直接用CHROME刷DDWRT,也成功了.然后手动配置路由器,累是累点,没办法.

重新设好网络,用T410测试速度(SPEEDTEST.NET),达到20M!很不错,下面就要花时间看WRT310N的稳定性了.

3/17,在EBAY上买了个INTEL 5100的N速网卡,准备给老机I6400换上提速.

看起来,在LINUX平台上,IE还是问题多多,这不,费了那么多事,换成CHROME就可以.我没试FIREFOX,估计那也成.

 

 

Tags: , , , , , , , , ,
Mar 14
Copy Code To Clipboard
  1. { Getting the Windows Directory }    
  2.   
  3. function GetWinDir: string;    
  4. var    
  5.   dir: array [0..MAX_PATH] of Char;    
  6. begin    
  7.   GetWindowsDirectory(dir, MAX_PATH);    
  8.   Result := StrPas(dir);    
  9. end;    
  10.   
  11. function WindowsDirectory: string;    
  12. var    
  13.   WinDir: PChar;    
  14. begin    
  15.   WinDir := StrAlloc(MAX_PATH);    
  16.   GetWindowsDirectory(WinDir, MAX_PATH);    
  17.   Result := string(WinDir);    
  18.   if Result[Length(Result)] <> '\' then    
  19.     Result := Result + '\';    
  20.   StrDispose(WinDir);    
  21. end;    
  22.   
  23. function GetWindowsDirectory(var S: String): Boolean;    
  24. var    
  25.   Len: Integer;    
  26. begin    
  27.   Len := Windows.GetWindowsDirectory(nil, 0);    
  28.   if Len > 0 then    
  29.   begin    
  30.     SetLength(S, Len);    
  31.     Len := Windows.GetWindowsDirectory(PChar(S), Len);    
  32.     SetLength(S, Len);    
  33.     Result := Len > 0;    
  34.   end else    
  35.     Result := False;    
  36. end;    
  37. { Getting the System Directory }    
  38.   
  39. function SystemDir: string;    
  40. var    
  41.   dir: array [0..MAX_PATH] of Char;    
  42. begin    
  43.   GetSystemDirectory(dir, MAX_PATH);    
  44.   Result := StrPas(dir);    
  45. end;    
  46.   
  47. function SystemDirectory: string;    
  48. var    
  49.   SysDir: PChar;    
  50. begin    
  51.   SysDir := StrAlloc(MAX_PATH);    
  52.   GetSystemDirectory(SysDir, MAX_PATH);    
  53.   Result := string(SysDir);    
  54.   if Result[Length(Result)] <> '\' then    
  55.     Result := Result + '\';    
  56.   StrDispose(SysDir);    
  57. end;    
  58.   
  59. function GetSystemDirectory(var S: String): Boolean;    
  60. var    
  61.   Len: Integer;    
  62. begin    
  63.   Len := Windows.GetSystemDirectory(nil, 0);    
  64.   if Len > 0 then    
  65.   begin    
  66.     SetLength(S, Len);    
  67.     Len := Windows.GetSystemDirectory(PChar(S), Len);    
  68.     SetLength(S, Len);    
  69.     Result := Len > 0;    
  70.   end else    
  71.     Result := False;    
  72. end;    
  73. { Getting the Temporary Directory }    
  74.   
  75. function GetTempDir: string;    
  76. var    
  77.   Buffer: array[0..MAX_PATH] of Char;    
  78. begin    
  79.   GetTempPath(SizeOf(Buffer) - 1, Buffer);    
  80.   Result := StrPas(Buffer);    
  81. end;    
  82.   
  83. function GetTempPath: string;    
  84. var    
  85.   TmpDir: PChar;    
  86. begin    
  87.   TmpDir := StrAlloc(MAX_PATH);    
  88.   GetTempPath(TmpDir, MAX_PATH);    
  89.   Result := string(TmpDir);    
  90.   if Result[Length(Result)] <> '\' then    
  91.     Result := Result + '\';    
  92.   StrDispose(TmpDir);    
  93. end;    
  94.   
  95. function GetTempPath(var S: String): Boolean;    
  96. var    
  97.   Len: Integer;    
  98. begin    
  99.   Len := Windows.GetTempPath(0, nil);    
  100.   if Len > 0 then    
  101.   begin    
  102.     SetLength(S, Len);    
  103.     Len := Windows.GetTempPath(Len, PChar(S));    
  104.     SetLength(S, Len);    
  105.     Result := Len > 0;    
  106.   end else    
  107.     Result := False;    
  108. end;    
  109.   
  110. procedure TForm1.Button1Click(Sender: TObject);    
  111. begin    
  112.   label1.Caption := GetWinDir;    
  113.   label2.Caption := GetSysDir;    
  114.   label3.Caption := GetTempDir;    
  115. end;   

 

Tags: , , ,
Mar 9

都是时间惹的祸 不指定

kcao , 11:59 , 技术 , 评论(0) , 引用(0) , 阅读(1610) , Via 本站原创

这程序在我这儿一切都运行得好好地,但是一换到DOUG那儿就有问题.迟迟解决不了.原来的程序没写LOG,现在加上去了一看才知道,原来是GB的时间格式和我这儿不一样,原来用的DATETIME.PARSE在他那儿就过不去了.

改成用ParseExact加上格式限制就好了,代码如下:

C# Code Copy Code To Clipboard
  1. DateTime.ParseExact("12/30/1899","M/d/yyyy",null);  

程序里有好几处类似的地方,要注意全部改到.

另外增加了LOG类,用来输出日志消息.

Tags: , ,
分页: 2/3 第一页 上页 1 2 3 下页 最后页 [ 显示模式: 摘要 | 列表 ]