乱七八糟杂货铺

因为心还不能定,所以混乱;什么时候心安静了,世界也就明晰了。

逝者如斯
网志分类
· 所有网志
· 说说看的技术
· 简单的生活
· 我关心的小事
· 随手写来的故事
最新评论
搜索本站
友情链接
· Color Schemes
· 我的歪酷
· 非非共享界

订阅 RSS

0009595

歪酷博客


炎冰 @ 2007-05-29 10:20

因为要把一组string转化成xml保存,觉得用循环来实现会比较容易,所以想把所有的参数保存在一个string型的二维数组里,才发现自己原来都没怎么用过数组呢,于是搜来了这篇文,说得还是挺清楚的,不过能不能合适于string型,等写完代码debug之后才能知道。之后再来修改update吧。暂且先转载来。

一维数组

一维数组以线性方式存储固定数目的项,只需一个索引值即可标识任意一个项。在 C# 中,数组声明中的方括号必须跟在数据类型后面,且不能放在变量名称之后,而这在 Java 中是允许的。因此,类型为 integers 的数组应使用以下语法声明:

int[] arr1;

下面的声明在 C# 中无效:

//int arr2[]; //compile error
声明数组后,可以使用 new 关键字设置其大小,这一点与 Java 相同。下面的代码声明数组引用:

int[] arr;
arr = new int[5]; // create a 5 element integer array

然后,可以使用与 Java 相同的语法访问一维数组中的元素。C# 数组索引也是从零开始的。下面的代码访问上面数组中的最后一个元素:

System.Console.WriteLine(arr[4]); // access the 5th element
但 C# 初始值设定项的数目必须与数组大小完全匹配,这与 Java 不同。可以使用此功能在同一行中声明并初始化 C# 数组:

int[] arr1Line = {1, 2, 3, 4, 5};

此语法创建一个数组,其大小等于初始值设定项的数目。

在程序循环中初始化
在 C# 中初始化数组的另一个方法是使用 for 循环。下面的循环将数组的每个元素都设置为零:

int[] TaxRates = new int[5];

for (int i=0; i<TaxRates.Length; i++)
{
TaxRates[i] = 0;
}
交错数组
C# 和 Java 都支持创建交错(非矩形)数组,即每一行包含的列数不同的数组。例如,在下面的交错数组中,第一行有四项,而第二行有三项:

int[][] jaggedArray = new int[2][];
jaggedArray[0] = new int[4];
jaggedArray[1] = new int[3];

多维数组
可以使用 C# 创建规则的多维数组,多维数组类似于同类型值的矩阵。虽然 Java 和 C# 都支持交错数组,但 C# 还支持多维数组(数组的数组)。
使用以下语法声明多维矩形数组:

int[,] arr2D; // declare the array reference
float[,,,] arr4D; // declare the array reference

声明之后,可以按如下方式为数组分配内存:

arr2D = new int[5,4]; // allocate space for 5 x 4 integers

然后,可以使用以下语法访问数组的元素:

arr2D[4,3] = 906;

由于数组是从零开始的,因此此行将第四行第五列中的元素设置为 906。

初始化
可以使用以下一种方法,在同一个语句中创建、设置并初始化多维数组:

int[,] arr4 = new int [2,3] { {1,2,3}, {4,5,6} };
int[,] arr5 = new int [,] { {1,2,3}, {4,5,6} };
int[,] arr6 = { {1,2,3}, {4,5,6} };
在程序循环中初始化
可以使用此处所示的嵌套循环初始化数组中的所有元素:

int[,] arr7 = new int[5,4];




 
炎冰 @ 2007-02-27 09:53

写在前面:其实《花又飘落》的第一篇并没有完啦,可以说是只开了个头,但是一直都没有把故事写出来。然后事情就发生了一些变化。这个应该能算得上所谓的事实变化了。反正,怎么都算是个好的变化了。


    你见过一种四瓣、浅蓝花色的野花吗?衬着葱绿的茎叶,铺洒在春季的泥泞小路上,星星点点的。微风拂过,瑟瑟轻颤,柔弱的表情,让人忍不住想要去呵护。

苓,就是这样的一个女孩——蓝色、娇小、安静的女孩。

    苓是个乖巧、可爱的女孩子,这是邻里皆知的事情。从小起就一直维持着乖孩子、好学生的模样,当然她骨子里也就是这样的人。叛逆?抛弃世俗?都是些想也不敢去想的念头。一副诚惶诚恐、忐忑不安的表情,让看着的人都觉得,把她教坏了,那真是会作孽。样貌虽然说不上颀长纤细,却也秀丽可人。


 
炎冰 @ 2007-01-24 10:28

唉,我也不是故意要放在同一天里写那么多技术文件,还是转载的。。。。。。惭愧。。。。
Javascript----文件操作
一、功能实现核心:FileSystemObject 对象
    要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对象。
二、FileSystemObject编程
使用FileSystemObject 对象进行编程很简单,一般要经过如下的步骤: 创建FileSystemObject对象、应用相关方法、访问对象相关属性 。
(一)创建FileSystemObject对象
创建FileSystemObject对象的代码只要1行:
var fso = new ActiveXObject("Scripting.FileSystemObject");
上述代码执行后,fso就成为一个FileSystemObject对象实例。
(二)应用相关方法
创建对象实例后,就可以使用对象的相关方法了。比如,使用CreateTextFile方法创建一个文本文件:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f1 = fso.createtextfile("c:\myjstest.txt",true");
(三)访问对象相关属性
要访问对象的相关属性,首先要建立指向对象的句柄,这就要通过get系列方法实现:GetDrive负责获取驱动器信息,GetFolder负责获取文件夹信息,GetFile负责获取文件信息。比如,指向下面的代码后,f1就成为指向文件c:\test.txt的句柄:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f1 = fso.GetFile("c:\myjstest.txt");
然后,使用f1访问对象的相关属性。比如:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f1 = fso.GetFile("c:\myjstest.txt");
alert("File last modified: " + f1.DateLastModified);
执行上面最后一句后,将显示c:\myjstest.txt的最后修改日期属性值。
但有一点请注意:对于使用create方法建立的对象,就不必再使用get方法获取对象句柄了,这时直接使用create方法建立的句柄名称就可以:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f1 = fso.createtextfile("c:\myjstest.txt",true");
alert("File last modified: " + f1.DateLastModified);
三、操作驱动器(Drives)
使用FileSystemObject对象来编程操作驱动器(Drives)和文件夹(Folders)很容易,这就象在Windows文件浏览器中对文件进行交互操作一样,比如:拷贝、移动文件夹,获取文件夹的属性。
(一)Drives对象属性
Drive对象负责收集系统中的物理或逻辑驱动器资源内容,它具有如下属性:
l TotalSize:以字节(byte)为单位计算的驱动器大小。
l AvailableSpace或FreeSpace:以字节(byte)为单位计算的驱动器可用空间。
l DriveLetter:驱动器字母。
l DriveType:驱动器类型,取值为:removable(移动介质)、fixed(固定介质)、network(网络资源)、CD-ROM或者RAM盘。
l SerialNumber:驱动器的系列码。
l FileSystem:所在驱动器的文件系统类型,取值为FAT、FAT32和NTFS。
l IsReady:驱动器是否可用。
l ShareName:共享名称。
l VolumeName:卷标名称。
l Path和RootFolder:驱动器的路径或者根目录名称。
(二)Drive对象操作例程
下面的例程显示驱动器C的卷标、总容量和可用空间等信息:
var fso, drv, s ="";
fso = new ActiveXObject("Scripting.FileSystemObject");
drv = fso.GetDrive(fso.GetDriveName("c:\"));
s += "Drive C:" + " - ";
s += drv.VolumeName + "\n";
s += "Total Space: " + drv.TotalSize / 1024;
s += " Kb" + "\n";
s += "Free Space: " + drv.FreeSpace / 1024;
s += " Kb" + "\n";
alert(s);
四、操作文件夹(Folders)
涉及到文件夹的操作包括创建、移动、删除以及获取相关属性。
Folder对象操作例程 :
下面的例程将练习获取父文件夹名称、创建文件夹、删除文件夹、判断是否为根目录等操作:
var fso, fldr, s = "";
// 创建FileSystemObject对象实例
fso = new ActiveXObject("Scripting.FileSystemObject");
// 获取Drive 对象
fldr = fso.GetFolder("c:\");
// 显示父目录名称
alert("Parent folder name is: " + fldr + "\n");
// 显示所在drive名称
alert("Contained on drive " + fldr.Drive + "\n");
// 判断是否为根目录
if (fldr.IsRootFolder)
alert("This is the root folder.");
else
alert("This folder isn't a root folder.");
alert("\n\n");
// 创建新文件夹
fso.CreateFolder ("C:\Bogus");
alert("Created folder C:\Bogus" + "\n");
// 显示文件夹基础名称,不包含路径名
alert("Basename = " + fso.GetBaseName("c:\bogus") + "\n");
// 删除创建的文件夹
fso.DeleteFolder ("C:\Bogus");
alert("Deleted folder C:\Bogus" + "\n");
五、操作文件(Files)
对文件进行的操作要比以上介绍的驱动器(Drive)和文件夹(Folder)操作复杂些,基本上分为以下两个类别:对文件的创建、拷贝、移动、删除操作和对文件内容的创建、添加、删除和读取操作。下面分别详细介绍。
(一)创建文件
一共有3种方法可用于创建一个空文本文件,这种文件有时候也叫做文本流(text stream)。
第一种是使用CreateTextFile方法。代码如下:
var fso, f1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\testfile.txt", true);
第二种是使用OpenTextFile方法,并添加上ForWriting属性,ForWriting的值为2。代码如下:
var fso, ts;
var ForWriting= 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
ts = fso.OpenTextFile("c:\test.txt", ForWriting, true);
第三种是使用OpenAsTextStream方法,同样要设置好ForWriting属性。代码如下:
var fso, f1, ts;
var ForWriting = 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CreateTextFile ("c:\test1.txt");
f1 = fso.GetFile("c:\test1.txt");
ts = f1.OpenAsTextStream(ForWriting, true);
(二)添加数据到文件
当文件被创建后,一般要按照“打开文件->填写数据->关闭文件”的步骤实现添加数据到文件的目的。
打开文件可使用FileSystemObject对象的OpenTextFile方法,或者使用File对象的OpenAsTextStream方法。
填写数据要使用到TextStream对象的Write、WriteLine或者WriteBlankLines方法。在同是实现写入数据的功能下,这3者的区别在于:Write方法不在写入数据末尾添加新换行符,WriteLine方法要在最后添加一个新换行符,而WriteBlankLines则增加一个或者多个空行。
关闭文件可使用TextStream对象的Close方法。
(三)创建文件及添加数据例程
下面的代码将创建文件、添加数据、关闭文件几个步骤结合起来进行应用:
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
// 创建新文件
tf = fso.CreateTextFile("c:\testfile.txt", true);
// 填写数据,并增加换行符
tf.WriteLine("Testing 1, 2, 3.") ;
// 增加3个空行
tf.WriteBlankLines(3) ;
// 填写一行,不带换行符
tf.Write ("This is a test.");
// 关闭文件
tf.Close();
(四)读取文件内容
从文本文件中读取数据要使用TextStream对象的Read、ReadLine或ReadAll 方法。Read方法用于读取文件中指定数量的字符;ReadLine方法读取一整行,但不包括换行符;ReadAll方法则读取文本文件的整个内容。读取的内容存放于字符串变量中,用于显示、分析。在使用Read或ReadLine方法读取文件内容时,如果要跳过一些部分,就要用到Skip或SkipLine方法。
下面的代码演示打开文件、填写数据,然后读取数据:
var fso, f1, ts, s;
var ForReading = 1;
fso = new ActiveXObject("Scripting.FileSystemObject");
// 创建文件
f1 = fso.CreateTextFile("c:\testfile.txt", true);
// 填写一行数据
f1.WriteLine("Hello World");
f1.WriteBlankLines(1);
// 关闭文件
f1.Close();
// 打开文件
ts = fso.OpenTextFile("c:\testfile.txt", ForReading);
// 读取文件一行内容到字符串
s = ts.ReadLine();
// 显示字符串信息
alert("File contents = '" + s + "'");
// 关闭文件
ts.Close();
(五)移动、拷贝和删除文件
对于以上三种文件操作,javascript各有两种对应的方法:File.Move 或 FileSystemObject.MoveFile用于移动文件;File.Copy 或 FileSystemObject.CopyFile用于拷贝文件;File.Delete 或 FileSystemObject.DeleteFile用于删除文件。
下面的代码演示在驱动器C的根目录下创建一个文本文件,填写一些内容,然后将文件移动到\tmp目录下,再在目录\temp下面建立一个文件拷贝,最后删除这两个目录的文件:
var fso, f1, f2, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\testfile.txt", true);
// 写一行
f1.Write("This is a test.");
// 关闭文件
f1.Close();
// 获取C:\根目录下的文件句柄
f2 = fso.GetFile("c:\testfile.txt");
// 移动文件到\tmp目录下
f2.Move ("c:\tmp\testfile.txt");
// 拷贝文件到\temp目录下
f2.Copy ("c:\temp\testfile.txt");
// 获取文件句柄
f2 = fso.GetFile("c:\tmp\testfile.txt");
f3 = fso.GetFile("c:\temp\testfile.txt");
// 删除文件
f2.Delete();
f3.Delete();
六、结 语
通过以上对FileSystemObject的各种对象、属性和方法的介绍和示例,相信你已经对如何使用javascript语言在页面中操作驱动器、文件和文件夹有了清晰的认识。但是上述提及的例程都非常简单,要全面、灵活地掌握javascript文件操作技术,还需要大量的实践练习。而且还有一点提醒大家,由于涉及到在浏览器中进行文件读写这样的高级操作,对于默认的浏览器安全级别而言,在代码运行前都会有一个信息提示,这点请在实际环境中提示访问者注意。

下面附加一个简单的操作实例,是公司同事为了给他的商务手机准备资料时用的。搬过来先~~

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<script language="javascript">
var fso= new ActiveXObject("Scripting.FileSystemObject");
var f1=fso.createtextfile("E:\joyce\shanghai_copy.txt",true);

</script>
</BODY>
</HTML>




 
炎冰 @ 2007-01-24 10:18

因为是菜鸟嘛,自己总没有什么新鲜的值得去写出来的东西,总是看着前辈的技术文档,然后觉得:“真的是很强啊~~”的感叹着,急忙搬回来。。。。。所以总是转载,转载的。
1.Global.asax文件的处理形式不一样

  转化后将出现错误,在vs2003中Global.asax具有代码后置文件,2.0下, 将代码分离文件移到 App_Code 目录下,以便使其自动变为可通过应用程序中的任意 ASP.NET 页面访问。“Code-behind”属性将从 ASAX 文件的指令中删除。vs2005则直接把代码写在Global.asax。所以需要删除转化过来的文件重新加入,并把相应的代码copy过来。

  2.2.0没有了项目文件。

   在 1.1 应用程序中,项目文件包含生成设置、对外部程序集的引用以及项目中的文件列表。而在 2.0 应用程序中,不再需要版本设置和文件列表,因为 Web 项目目录下的所有文件都被视为 Web 项目的一部分。

  3.代码分离模式。

  在 ASP.NET 1.1 中,代码分离模式使内容(例如 test.aspx)与代码(例如 test.aspx.cs)分离。内容页面从代码分离页面继承而来,代码分离页面包含用户和设计器生成的代码。

  ASP.NET 2.0 通过使用局部类来增强代码分离模式,使用 partial 关键字可以将单个类的代码分隔到两个独立的文件中。它允许一个类跨越多个文件。在新的代码分离模式中,内容页面从编译的类继承而来,它由相应的代码分离页面以及自动生成的存根文件组成,存根文件用于为内容页面中使用的控件定义字段声明。此项更改使自动生成的代码与用户的代码分离,并且使代码分离页面显著变小且更加简洁。局部类结构还降低了由于编辑设计器生成的代码而不小心破坏页面的风险。

  如果出错请检查是否有partial 关键字,否则添加 partial 关键字。

  4.语法检查。

  asp.net1.1程序,编译时不会检查aspx、aspcx等文件中的语法错误,而vs2005编译时会检查项目中所有的aspx、aspcx等文件中的语法,所以如果有语法错误,会导致编译无法通过。

  5.控件声明。

  如果在 .aspx 页面上声明了所有控件,则从代码分离文件中删除所有控件声明,否则报错:重复定义。

  6.(仅限于 C#)将事件挂钩代码从代码分离文件的 InitialzeComponent 函数移到 .aspx 页面中。

  请注意,此操作不适用于自动调用的事件,包括 Page_Init、Page_Load、Page_DataBind、Page_PreRender、Page_Unload、Page_Error、Page_AbortTransaction 和 Page_CommitTransaction。

  7. 部署方式(预编译、完整编译、可更新站点等)。

  在 1.x 中,Web 应用程序是作为一个大型程序集而预编译和部署的。内容页面(*.aspx)不在服务器上编译,但可以在服务器上编辑。借助新的页面编译模式和目录结构,您就可以使用多种不同的配置来部署 ASP.NET 2.0 应用程序。一种情况,您可以预编译所有的 ASPX 页面并部署由完全编译好的程序集组成的 Web 应用程序。在这种模式下,您不能在服务器上轻松地更改该应用程序。另一种情况,您可以在不预编译任何代码的情况下部署应用程序。在这种配置下,您可以直接在服务器上更改该应用程序中的 .aspx 页面、代码分离文件或其他任何代码。当用户请求服务器上的页面时,页面将被动态编译。

  8.将 .aspx 页面中的所有 CodeBehind 属性更改为 CodeFile 属性

  CodeBehind: 指定包含与页关联的类的已编译文件的名称。该属性不能在运行时使用。
提供此属性是为了与以前版本的 ASP.NET 的兼容,以实现代码隐藏功能。在 ASP.NET 2.0 版中,应改用 CodeFile 属性指定该源文件的名称,同时使用 Inherits 属性指定该类的完全限定名称。

  CodeFile

  指定指向页引用的代码隐藏文件的路径。此属性与 Inherits 属性一起使用可以将代码隐藏源文件与网页相关联。此属性仅对编译的页有效。

  9.将所有独立的代码文件和AssemblyInfo.cs都被移到 App_Code 目录下。

  但运行转换向导之后,您可能会发现某些代码分离文件(例如,*.aspx.cs 或 *.ascx.vb)被移到 App_Code 目录下。这表明代码分离文件的内容页面含有格式不正确的 Codebehind 指令,并且没有进行正确设置。也就是说,转换向导不能确定该代码分离文件是否实际绑定到某个特定的 .aspx 页面。

10.Web 服务

  在 ASP.NET 1.x 中,Web 服务 (.asmx) 自动拆分到空白标题页面 (.asmx) 和包含实际方法的代码分离文件中。

  Asp.net2.0下:

  • 将代码分离类移到 App_Code 目录下,以便使其自动变为可通过应用程序中的任意 ASP.NET 页面访问。 
• 更改 .asmx 文件中的 CodeBehind 属性,以便指向新位置。
(请注意,代码分离文件不使用局部类,因此继续使用 CodeBehind 属性。) 
• 将所有的默认、Friend 和 Internal 范围的声明更改为 Public。 

 来源:太平洋网络 | 作者:litp



 
炎冰 @ 2007-01-20 15:56

韩寒,记得在被大家哄抬着的时候,我就很厌恶他,还特意写了日记来发泄对他的不满。但是,今天我却看起了他的博客,并且发现,原来他的想法,自己也有挺多认同了。虽然还是一贯的骄傲着,蔑视着,却也能接受而不是骂骂咧咧地关掉网页,还给自己找一整天的别扭。
时间,年龄,似乎在外表上能留下明显的印记,被提醒着,长大的事实,但是,思想和心灵上的长大也很明显呢。
社会——是用来历练人的。
总是单纯的生活着,觉得自己保持着自己的坚持,其实,在看过、经历过人生的洗礼,总是不自觉地会学着长大。人,总是害怕受到伤害的,一次被狠狠地伤个彻底后,即使自己不在意,潜意识也会去避免曾经经受的痛苦感觉。

随着在社会的环境里摸爬滚打,渐渐也知道要学会去聆听。个性是我,作为我活着的根本,但是,只是一味的去坚持自己,只知道我的话,会逼自己到死角,无路可走,也不一定就真地会幸福了。学会了聆听别人,不一定要被别人动摇,不一定要同化,但是,聆听不仅表示了对别人的尊重,也可以审视自己。
很多的冲突和不愉快,就是因为没有去聆听的原因。
当然,如果自己的坚持是必不能少的,是自己的信念,为什么不坚持呢?以一种持久地,无愧于心的,又无害于旁人的方式,坚持下去呢?
或许,这样的方式下,有人也会受伤,也会灰头土脸,但是,我,问心无愧了,就可以。

在若干年后,我终于能够正视韩寒的话和文章了。虽然不认同的还是不认同,却不是一味的讨厌,没有理由的小孩脾气。
要学会用自己的脑子去思考。



 
炎冰 @ 2007-01-16 17:25

果然是抛弃XP太久远了~竟然连远程桌面都没有用过。失败啊失败~~~~OTZ,现在来补习一点功课来。谁让工作要用到,每次都像一个白痴一样,傻啊~~~傻啊~~~

把这篇文放上来的时候,纯粹是出于怕自己忘记了,不过静下心来看完,才发现,实在不需要全篇的网上搬,又撤了下去。还真是来回的折腾。不过也不错,算是好好学习了一把XP捆绑的远程桌面。
从性能,同步率来看,果然微软出品还是不错的,和我以前用过的gotomyPC的效果就是不一样,延迟,显示的色彩等都非常的不错。支持一下了。



 
炎冰 @ 2007-01-13 18:25

网站在这么拖拖拉拉的节奏里,也慢慢的浮出水面,接近了完工的阶段。现在最紧要的事情就是租用服务器配置完成。今天联系了一家空间提供商,大概要1万多才能搞定呢,不知道大家的意见怎么样,希望可以顺顺利利完成,慢慢的组也可以越来越好。虽然,大家一起经历了很多,有挫折有伤心,在新的一年里,可以都慢慢的忘记,新年新希望~~~~
加油加油!
对了,顺便给空间商作个广告吧~~~

地址:http://www.idc2.com.cn/index.htm



 
炎冰 @ 2007-01-13 18:15

阳光明媚——这真的是一个俗不可耐的词汇。可是,看到金灿灿的颜色,透过葱翠的绿色,被点点撒在我置身的空间里,温暖平和。生活在明媚里,真幸福……