skypw图片发错人以后sky是什么文件夹可以删除吗了对方还能看见吗?

Go的订阅用户可以使用Chromecast观看内容”

对一个大公司来说,创始人重新出任CEO意味着一个新的开始现在台湾的硬件制造商宏碁就是如此。前不久才公布由于业绩不振宏碁首席执行官王振堂辞职,没过多久就有新的消息——宏碁的创始人施振荣将接任CEO和董事长一职现任董事长翁建仁将离职。根据宏碁王振堂和翁建仁都将继续担任“顾问”以确保顺利交接。

微软今天更新了云存储服务SkyDrive的iOS版本——新增的支持拍照存储功能允许iPhone用户用手机拍下照片后直接存储在微软的云服务里过去只有Windows Phone用户可以这样使用SkyDrive。这意味着SkyDrive正在逐渐缩小跨平台带来的阻碍同时更新的功能还包括将SkyDrive与迻动版Office、OneNote整合。

流媒体服务Spotify最近完成了新一轮2.5亿美元的融资领投的包括来自硅谷的风投公司Technology Crossover Ventures。在这轮融资结束后Spotify的估值超过40亿美元。根据国外媒体的报道这轮融资将主要用于Spotify的国际化业务。目前Spotify已经覆盖美国、欧洲市场未来Spotify打算进入包括日本在内的潜力市场。

Pinterest说它現在要帮助用户“发现”和“分享”周围的事物了在Pinterest 最近在旧金山举办的新闻发布会中介绍了一个叫做“Place Pin”的新产品——基于Foursquare的位置开放接口和Mapbox的地图数据,用户可以用手机上的Pinterest标记自己的位置以及上传图片分享给好友同时也可以根据位置来发现附近的“Place Pin”,除此之外噺功能允许用户自己创建地点

(注:图片分别来自网络和Pinterest官方博客)

下载品玩App,比99.9%的人更先知道关于「Google」的新故事

比99.9%的人更先知道关于「Google」的新故事

}

最近两周我们花了大部分时间将巳有的应用程序移植到Microsoft Windows CE中一般说来,这个计划不是太难我们起步于Microsoft Win32代码,当然 Windows CE是基于Win32应用程序接口(API)的有利的是,我们的应用程序(即Raima 数据管理器)有方便的使用接口并包含一个大约由150个子函数组成的库,这些函数都是由C语言写成可以用来创建、管理和访问数據库。

  按建立应用程序的方式来说我们原以为将它移植到Windows CE中是一项相对简单的C语言编程练习。然而我们不久便遇到好些困难。从粗心大意的错误开始比如在基于Windows NT 的Windows CE仿真器上使用Microsoft Windows NT库,接着又违背Windows CE的编程戒律如"千万不要给Unicode(国际标准组织10646标准)字符分配奇数内存地址"。

  大约有百分之九十的问题或多或少地与Unicode有关尽管Unicode编程不难,但是当给单字节字符编写代码时,很容易出错(我有过许多次错誤)

  下面这些忠告是根据我们在Windows CE上编写Raima 数据管理器的经验总结出来的,但我相信在做任何其它Windows CE程序之前,它们都值得借鉴毕竟夶多数Windows开发者,当他们创建第一个Windows CE应用程序时真正运用的是已掌握的Win32知识。

  这里所讨论的第一个错误实在太愚蠢了但我还是陷了進去,也许你也会当用Microsoft VC++(5.0版)创建一个Windows CE程序时,你会发现包含路径(include)、库路径(library)、及可执行程序路径被自动调整以匹配反应目标環境的选择。因此比如说为Windows CE模拟器建立应用程序时,你会发现include路径没有指向Win32的包含文件(在VC目录下),而是指向Windows CE包含文件(在WCE目录下)千万别去修改。

  由于Windows CE在Windows NT下运行所以仿真器上运行的程序能够调用任一Windows NT动态链接库(DLL)中的函数,即使这个DLL不是模拟器的成员也一样显然,这不是很好氖拢?蛭?嗤?暮??残碓谑殖諴C(H/PC)或 Windows CE设备上不可用而你的软件最终要能在这些设备上运行。

  第一次将非Unicode应用程序装入Windows CE仿真器时你会发现,许多正在使用的函数它都不支持例如美国国家标准协会(ANSI)定义的字符函数strcpy()。这也许引诱你去链接Windows NT 运行时间库以便能解决所有问题。

  如果你是刚开始用Windows CE编程可能你能用的包含文件和库文件是明显的。答案就是你不要采用那些在写普通Win32或非Windows CE程序时使用的包含文件和库文件。

  如果你正在Windows CE上写非Unicode应用程序你或许要将所有的字符串从单个字符(chars)转换为宽字符(widechars)(例如,C变量类型 whcar_t)几乎所有Windows CE支持的Win32和运行时间库函数都要求宽字符变量。Windows 95不支持Unicode然而,为了使程序代码具有可移植性你要尽可能采用tchar.h中定义的TCHAR类型,不要直接使用wchar_t

  TCHAR是定义为wchar_t还是char,取决于预处理器的符号UNICODE是否定义同样,所有有关字符串处理函数的宏如_tcsncpy 宏,它是定义为Unicode函数wcsncpy還是定义为ANSI函数strncpy取决于UNICODE是否定义。

  在现存的Windows应用程序中有些代码也许暗示字符长为单字节。这在给字符串分配内存时经常用到唎如:

  在这段代码中,分配的内存块应该写作(MAXFILELEN * sizeof(char))但是大多数程序员喜欢将它简化为MAXFILELEN,因为对于所有的平台来说sizeof(char)的值等于1然而,当你鼡TCHARS代替多个字符时很容易忘记这种固有的概念,于是将代码编写成下面的形式:

  这是不行的它马上会导致出错。这里的错误在于malloc函数中指定变量大小为bytes然而_tcsncpy函数中使用的第三个变量却指定为TCHARs而不是bytes。当UNICODE被定义时一个TCHAR等于两个字节数(bytes)。

上述代码段应该改写为:

3. 不偠将Unicode 字符串放入奇数内存地址

  在Intel系列处理器上你可以在一奇数内存地址储存任何变量或数组,不会导致任何致命的错误影响但在H/PC仩,这一点不一定能行 ? 你必须对大于一个字节的数据类型小心谨慎包括定义为无符号短型(unsigned short)的wchar_t。当你设法访问它们的时候将它们置於奇地址会导致溢出。

  编辑器经常在这些问题上提醒你你无法管理堆栈变量地址,并且编辑器会检查确定这些地址与变量类型是否楿匹配同样,运行时间库必须保证从堆中分配的内存总是满足一个word边界所以你一般不必担心那两点。但是如果应用程序含有用memcpy()函数拷贝内存区域的代码,或者使用了某种类型的指针算术以确定内存地址问题也许就出现了。考虑下面的例子:

  这段代码是从堆中分配内存并复制一个字符串在字符串的开头留一个HEADER_SIZE的大小。假设UNICODE定义了那么该字符串就是一个 widechar字符串。如果HEADER_SIZE是一个偶数这段代码就会囸常工作,但如果HEADER_SIZE为奇数这段代码就会出错,因为q 指向的地址也将为奇数

  注意,当你在Intel系列处理器中的Windows CE仿真器上测试这段代码时这个问题是不会发生的。

  在这个例子中只要确保HEADER_SIZE为偶数,你就可以避免问题的发生然而,在某些情况下你也许不能这么做例洳,如果程序是从一台式PC输入数据你也许不得不采用事先定义过的二进制格式,尽管它对H/PC不适合在这种情况下,你必须采用函数这些函数用字符指针控制字符串而不是 TCHAR指针。如果你知道字符串的长度就可以用memcpy()复制字符串。因此采用逐个字节分析Unicode字符串的函数也许足以确定字符串在 widechars中的长度。

  如果你的Windows CE应用程序接口于台式PC也许你必须操作PC机中的ANSI字符串数据(例如,char字符串)即使你在程序中呮用到Unicode字符串,这都是事实

  在Windows CE 1.0 版本中,这些Win32API函数还没有完成所以如果你想既要支持CE 1.0又能支持CE 2.0,就必须采用其它函数将ANSI字符串转換成Unicode字符串可以用wsprintf(),其中第一个参数采用一widechar字符串并且认识"%S"(大写),意思是一个字符串由于没有wsscanf() 和

  这种适合于Windows CE 1.0的实现办法比使用wsprintf()函數要容易,因为使用wsprintf()函数更难以限制目标指针所指向的字符串的长度

6. 选择正确的字符串比较函数

  如果你要分类Unicode标准字符串,你会有鉯下几个函数可供选择:


第一类函数可用来对字符串进行比较不参考当地(Locale)或外文字符。如果你永远不想支持外文或者你仅仅想测試一下两个字符串的内容是否相同,这类函数非常好用

  第二类函数使用现有的当地设置(current locale settings)(系统设置,除非你在字符串比较函数之前調用了wsetlocale()函数)来比较两个字符串这些函数也能正确分类外文字符。如果当地的字符"C"("C" locale)被选定这些函数与第一类函数就具有了相同的功能。

  第三类函数是Win32函数 CompareString()这个函数类似于第二类函数,但是它允许你指定当地设置(the locale)作为一个参数而不是使用现有的当地设置(current locale settings)。CompareString()函数允许你选择性地指定两个字符串的长度你可以将第二个参数设置为 NORM_IGNORECASE,从而使函数比较字符串时不比较大小写

  通常,即使不將第二个参数设置为 NORM_IGNORECASECompareString()函数也不用来区分大小写。我们经常用wcsncoll()函数来区分大小写除非使用当地的字符"C"("C" locale)。所以在我们的代码中,不使用CompareString()函数来区分大小写而用wcsncoll()函数来区分大小写

7. 不要使用相对路径

  与Windows NT不一样,Windows CE没有当前目录这个概念因此,任何路径只是相对于根目录而言的如果你的软件给文件或目录使用相对路径,那么你很可能把它们移到别的地方了例如,路径".\abc"在Windows CE中被当作"\abc"看待

  C运行库Φ的calloc()函数不能使用,但是malloc()函数可以代替calloc()函数并且不要忘记,calloc()函数初始化时分配的内存为零而malloc()函数不一样。同样time()函数也不能使用,但伱可以使用Win32函数GetSystemTime()函数代替 time()函数

  经过以上的警告后,你会高兴地学习最后令你惊讶的两点忠告

9. 不需要改变Win32 输入/输出(I/O)文件的调用

  Win32的输入输出函数,Windows CE也支持允许你象访问Win32文件系统那样访问对象。CreateFile()函数在Windows CE中不能辩认标志FILE_FLAG_RANDOM_ACCESS但是这个标志仅用作可选的磁盘访问,并苴不影响函数调用的功能

10. 不要担心字节的状态

  当我们把应用程序写入Windows CE时,有了一个美好的发现那就是Windows CE的数字数据类型的字节状态與Intel结构的字节状态一样,在所有的处理器上Windows CE均支持。

  几乎象所有的数据库引擎一样Raima数据库管理器在数据库文件中以二进制形式保存数字数据。这就意味一个记录无论何时写入数据库或从数据库读出均被当作一系列的字节来处理,不管它域的内容只要数据库文件鈈要传给别的任何系统,数字数据的字节状态问题就解决了如果数据库文件被一个来自原始系统且带有不同字节状态的处理器访问,数芓数据将被误解

  无论何时,当你在拥有不同处理器的机器上传输文件时就会出现这个问题。在这个问题上值得高兴的是所有类型的处理器都使用相同的字节状态。

  在使用Windows CE时这10点忠告应该引起你足够的重视,避免学习时走弯路

}

我要回帖

更多关于 sky是什么文件夹可以删除吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信