显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

NDEB Exam Busters

加拿大面对面及远程考牌辅导

 
 
 
 
 
 
 
 

海外 加拿大 狮子座

 发消息  写留言

 
NDEB, NBDE, Part1, Part2, 移民, 考试 资料库 真题 AFK, National Board Dental Exam, Foreign Trained, 下载, Download, 美国 加拿大 行医资格考试
 
近期心愿N/A
人生格言中国交通很行 中国农业很行 中国工商很行 中国建设很行 中国人民很行 中国很行
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 
 
 

[置顶] 窝洞分类 - G.V.Black Cavity classification 分类

2010-3-13 18:15:18 阅读2775 评论0 132010/03 Mar13

G.V.Black分类

龋洞分类 - G.V.Black Cavity classification 分类 - godsonx - godsonx的博客

 

 

 考题:

哪些洞型可以出现在任何牙上?

 

答案:   Class I, Class V & Class VI   一类, 五类和六类洞

 

 

Cavity classification standardized methods of recording the need for restoration exist to facilitate communication among clinicians, researchers, and dental educators. The most commonly accepted means of classifying cavities is by the names of the surfaces involved. Cavity type is classified further based on the type of treatment and anatomical area involved. This classification, developed by Dr. G. V. Black in 1908, is designated by Roman numerals as Class I, Class II, Class III, Class IV, Class V, and Class VI (this is the only category that has been added to his original classification system). Note: It is important to remember that the classification relates to location and not size of the cavity.

#  Class I cavities -> involve the pits and fissures, while all other classifications involve smooth surfaces
of the teeth.
      #  Class II cavities -> involve the proximal surfaces and occlusal surfaces of premolars and molars.
      #  Class III cavities -> involve the proximal surfaces of incisors and canines that do not involve the
incisal angle.
      #  Class IV cavities -> are located on the proximal surface of incisors and canines and do involve
the incisal angle.
      #  Class V cavities -> are on the facial or lingual surface of ail teeth and do not involve a pit or fissure.
      #  Class VI cavities -> are on the incisal edges of anterior teeth or on the occlusal cusp heights of
posterior teeth.

** Remember: The best method for definitive detection of incipient carious lesions on the interproximal surfaces of posterior teeth (distal surface of canines through molars) is by bite-wing radiographs. 

 

 

 

I 类洞:为发生于所有牙齿的发育窝、沟内的龋损所制备的洞形。包括磨牙[牙合]面窝沟洞,磨牙颊(舌)面的颊(舌)沟洞,前磨牙的[牙合]面窝沟洞,上前牙的腭面窝洞。

II 类洞:为发生于后牙邻面的龋损所制备的洞形。包括前磨牙的邻面洞、邻[牙合]面洞和邻颊(舌)面洞,磨牙的邻[牙合]面洞和邻颊(舌)面洞及邻面洞。

III类洞:为发生于前牙邻面未损及切角的龋损所制备的洞形。包括切牙、尖牙的邻面洞、邻腭(舌)面洞、邻唇面洞。

IV类洞:为发生于前牙邻面并损及切角的龋损所制备的洞形。包括切牙、尖牙的邻唇腭(舌)面洞,目前含义延伸及牙外伤引起切角缺损的洞。

V类洞:为发生与所有牙齿的颊(唇)、舌(腭)面近龈1/3牙面的龋损所制备的洞形。包括前牙、前磨牙、磨牙在颊或舌面的近龈1/3洞。

 

窝洞定义、结构、各部名称、代表符号

(1)窝洞定义:牙齿龋洞去净龋坏组织,经手术制备的具有特定形状的洞。要求填入充填材料后,充填材料及牙齿均能承担正常咀嚼

压力,不折断、不脱落。

(2)窝洞结构:窝洞由洞壁、洞角及洞缘角构成。


    1)洞壁:组成窝洞的内面统称为壁。按其所在牙面部位命名如近中壁、远中壁、颊壁、舌壁、龈壁、髓壁、轴壁等。

    2)洞角:两个洞壁相交构成的角称为线角(Line angles),三个洞壁相交形成的角称为点角(Point angles)。线角及点角的命名

均以构成他们的各洞壁名称联合命名,如颊轴线角、轴髓线角、颊龈轴点角、舌龈轴点角等。

    3)洞缘角(Cavosurface Margin):洞侧壁与牙齿表面的相交线称为洞缘角,也称为洞面角。


(3)窝洞的名称及符号

    1)窝洞的名称:可根据窝洞所在的牙面命名,如牙合面洞、近中洞、近中牙合面洞等;也可以窝洞所包括牙面数命名,如单面

洞、复面洞等。

    2)窝洞的符号:以所在牙面英文名称的第一个字母或前两个字母作为符号,具体如下:

    切端为I(incisive S.)颊侧为B(buccal S.)

    舌侧为L(lingual S.)牙合面为O(occlusal S.)

    唇侧为La(labial S.)近中面为M(medial S.),远中面为D(distal S.)等。


=======================================================================================

Tooth Preparation Walls
---------------------------
Internal Wall. An internal wall is a prepared (cut) surface that does not extend to the external tooth
surface (Fig. 6-10).

Axial Wall. An axial wall is an internal wall parallel
with the long axis of the tooth (see Fig. 6-10).

Pulpal Wall. A pulpal wall is an internal wall that
is perpendicular to the long axis of the tooth and
occlusal of the pulp (see Figs. 6-10 and 6-13 [p]).

External Wall. An external wall is a prepared (cut)
surface that extends to the external tooth surface. Such
a wall takes the name of the tooth surface (or aspect)
that the wall is toward (see Fig. 6-10).

Floor (or Seat). A floor (or seat) is a prepared (cut) wall that is reasonably flat and perpendicular to the
occlusal forces that are directed occlusogingivally (generally parallel to the long axis of the tooth).
Examples are the pulpal and gingival walls (see Fig. 6-10).
Such floors may be purposefully prepared to provide
stabilizing seats for the restoration, distributing the
stresses in the tooth structure, rather than concentrating
them. This preparation increases the resistance form (see
later) of the restored tooth against postrestorative fracture.
More regarding this type of resistance form is
presented in a later section.

Enamel Wall. The enamel wall is that portion of
a prepared external wall consisting of enamel (see
Fig. 6-2D).

Dentinal Wall. The dentinal wall is that portion of
a prepared external wall consisting of dentin, in which
mechanical retention features may be located (see
Fig. 6-2D).


龋洞分类 - G.V.Black Cavity classification 分类 - godsonx - NDEB Board Busters
 
龋洞分类 - G.V.Black Cavity classification 分类 - godsonx - NDEB Board Busters
 
龋洞分类 - G.V.Black Cavity classification 分类 - godsonx - NDEB Board Busters



==================================================================================================



洞形设计
--------------

外形设计

窝洞外形的范围应包括所有病变组织和可疑的点隙裂沟,外形应作预防性扩展,邻面侧壁应扩展到接触点以外的自洁区,龈壁应置于平齐眼乳突边缘健康的牙休组织上。窝洞外形线应为圆缓曲线,以减少应力集中。



抗力形设计
-----------
抗力形是使充填体和余留牙能够承受咬合力而不会破裂的特定形状。Ⅰ、Ⅱ类洞对抗力形要求较高,V类洞要求可稍低。
1、洞形深度:窝洞底必须建立在牙本质上,后牙洞深应达釉牙本质界下0.2---0.5mm,前牙应达釉牙本质界的牙本质面。
2、盒状洞形:窝洞应制备成盒状,即除特殊情况外,要洞底平,侧壁平直与洞底相垂直,各侧壁之间相互平行。洞底各点线角应明确而圆钝,使应力不集中,要力均匀分布。
3、梯阶形成:复面洞的洞底应形成梯阶以均匀分担咬合力,其中龈壁与髓壁平行,轴壁与近、远中侧壁平行,各壁交接呈直角,点、线角圆钝。注意龈壁一定要与轴壁垂直,切勿形成向龈方的斜面。
4、无基釉、脆弱牙体处理:窝洞釉质壁应与釉柱排列方向平行,洞口不能留有无基釉;对脆弱的牙尖牙嵴,应适当降低高度,减轻要力负担。



固位形设计
-----------
固位形是使充填体能保留于洞内,承受更力后不移位、不脱落的特定形状。当充填材料与牙体组织无粘结力时,充填体的固位主要靠密合的摩擦力和一定的机械样合力。
1、侧壁固位:相互平行且具有一定深度的侧壁,可使充填体通过和洞壁的密合摩擦而达固位目的。
2、倒凹固位:单面洞可以在牙尖下制备倒凹增强固位,制备倒凹时要防止伤及髓角,因此洞底深度超过釉牙本质界0.5mm以上,应先垫底再制倒凹,较深的洞可以不制倒凹,使用粘结性强的修复材料时也可不制倒凹。
3、 鸠尾固位:鸠尾固位用于复面洞的固位,它借助鸠尾峡部的锁扣作用,防止充填体水平方向的脱出。鸠尾峡必须有一定的深度和宽度,宽度在后牙一般为颊舌牙尖间距的1/3。位置应在洞底轴髓线角的靠中线侧。鸠尾的宽度必须大于鸠尾峡。
4、 梯形固位:也是复面洞采用的固位形,邻雯面洞的邻面设计为龈方大于雯方的梯形,防止充填体呈垂直方向脱出。梯形的外形应作预防性扩展,梯形深度应达釉牙本质界下0.2一0.5mm。




便利形设计
-------------
在维护外形的基础上,在需要的地方略加修整,便于器械和充填物能够达到窝洞的任何部位。要达此目的,可选用适当器械,对洞形作适当延伸;当洞外形位于不健康牙龈处时,可用分离器或木楔分离牙龈,必要时切除部分牙龈。





-----------------------------------------------------

预备步骤

窝洞预备的基本步骤
1、开扩洞口或寻人口:病变部位较隐蔽的龋洞,应首先开扩洞口或寻人口,使龋洞充分暴露或为手术操作形成通路,便于观察和进行操作。可用裂钻或球钻去除洞缘的无基釉质,依病变范围开扩,或用裂钻从龋洞一侧作沟,以形成手术通路。
2、去除腐质:病变范围较大时,应先去除腐质。可先用挖匙除去洞内食物残渣和大部分腐质,然后用球钻将洞缘周围腐质除尽,最后除尽洞底腐质。洞底近髓腔处的少量软化牙本质的去留,应视实际情况而定。
3、设计并制备洞形:窝洞的洞缘线构成窝洞外形。虽然各类窝洞都有基本的外形要求,但洞形的制备还应兼顾病变破坏的范围。腐质除尽后,应依病变范围设计窝洞外形。窝洞应包括所有的病变部位,其颊(唇)、舌壁应达自洁区。窝洞的形态应符合固位形和抗力形的基本原则。制备过程中不可过多磨除健康的牙体组织。
4、修整洞形、清洗窝洞:完成洞形制备后,应去除洞内牙本质碎屑,仔细检查窝洞各部是否腐质已除尽,抗力形、固位形是否符合要求。不符合要求时应进一步去除腐质、修改洞形至达到要求。最后修整洞缘釉质,使与釉柱排列方向一致,并彻底清洗窝洞,除去所有碎屑。
5、窝洞消毒:窝洞预备后洞内牙本质小管中不可避免地会有少量细菌残留,理想的消毒药物,既可杀灭小管中的细菌,又不致损伤牙髓,对窝洞的消毒无疑有益。但目前所用的消毒药物尚不能达到上述要求。因此,除尽腐质远比消毒窝洞重要。除尽腐质即可除去绝大部分细菌,即使有少量细菌残留,由于充填修复后的环境不利细菌生长,经一定时间后也会逐渐丧失活动能力或死亡。
I类洞的制备
I类洞多为单面洞,但当龋损波及颊、舌侧面时,应制成复面洞。单面洞应底平、壁直,窝洞深度达釉牙本质界处。较深的龋损不必要求窝洞底平整,在去尽腐质后可借助垫底形成平底。复面洞时,颊面或舌面窝洞的龈壁应与牙长轴垂直,其近远中和颊舌宽度均不小于1.5mm。近、远中壁相互平行并垂直于龈壁,轴壁与龈壁垂直。要面鸠尾固位形的洞形要求同单面洞。鸠尾峡的宽度不小于1.5mm,用高速气涡轮牙钻(裂钻)沿颊沟或舌沟向更面中央窝沟或远中窝沟扩展形成鸠尾形。洞底髓壁与轴壁垂直,形成梯阶。
Ⅱ类洞的制备
Ⅱ类洞依病变破坏范围可制备单面洞或复面洞。当病变已累及接触区时,应制备复面洞;若病变未累及接触区,为避免过多磨除健康的牙齿组织,可从邻面制备单面洞;如果从邻面操作极为困难,也可制成复面洞,从更面进行操作。Ⅱ类洞多数情况下需制备成复面洞。
邻面部分制备:用裂钻从舌面边缘蜻处开扩洞口,钻轴与更面垂直,洞口的大小与邻面破坏范围一致。将邻面洞制备成盒状洞形,龈壁与轴壁垂直,宽度不超过2mm。颊舌壁位于自洁区并在要方略靠拢,使龈方颊舌壁间距略大于雯方。
Ⅲ类洞的制备
视病变范围的大小和邻面的存在与否可备成单面洞或复面洞。
1、单面洞的制备:病变范围较小,龋洞的颊、舌壁有一定厚度且同时伴有龋损侧邻牙缺失,可制备单面洞。
1.1 用倒锥钻从邻面去除龋损腐质。
1.2 按单面洞制备方法将窝洞制备成与患牙邻面外形相一致的三角形,洞底与牙面形态一致呈凸形,深度达釉牙本质界即可。
1.3 可在唇轴舌点角处制作倒凹,倒凹位于釉牙本质界下约0.5毫米处的牙本质中。
2、复面洞的制备:若前牙邻面龋损破坏范围大,或龋损侧邻牙存在,无备洞操作空间,须制备复面洞。
2.1 视龋损破坏范围及方向确定从舌侧或唇侧扩大洞口,如唇侧未遭破坏则尽量从舌侧人口。
2.2 用裂钻从舌面边缘峰处开扩洞口,洞口的切龈向宽度应与邻面破坏范围一致。邻面洞形与单面洞相同。
2.3 用裂钻从邻面约lmm深处向舌侧窝扩展形成鸠尾形,裂钻的长轴应与舌面垂直。舌面窝洞的洞形与I类洞相同。鸠尾一般不过中线,其切龈宽度约为2.5mm。切牙的鸠尾应不损伤切嵴、对侧的边缘嵴和舌隆突;由于切牙的唇舌径较小,制作鸠尾固位形时,不可加深窝洞,以免降低牙齿的抗力和意外穿髓。舌面洞底(髓壁)与邻面洞底(轴壁)互相垂直并形成梯阶。
IV类洞的制备
因受银汞合金充填材料性能所限,目前一般不用银汞合金修复IV类洞而改用复合树脂类修复材料。
V类洞的制备
1、用小号倒锥钻从唇、颊侧备洞,钻针应垂直于牙面,深度约达釉牙本质界处的牙本质中。
2、洞外形呈肾形,洞底呈凸面,与牙面平行。
3、龈壁与洞底垂直,可在轴龈线角或轴妥线角处作倒凹以增进固位。

作者  | 2010-3-13 18:15:18 | 阅读(2775) |评论(0) | 阅读全文>>

A call to PInvoke function switchToThisWindow has unbalanced the stack

2015-4-26 4:46:49 阅读10 评论0 262015/04 Apr26

A call to PInvoke function switchToThisWindow has unbalanced the stack. 

This is likely because the managed 
PInvoke signature does not match the unmanaged target signature. 

Check that the calling convention and parameters of the 
PInvoke signature match the target unmanaged signature.


e.g.

正确
        [DllImport("user32.dll")]
        public static extern void SwitchToThisWindow(IntPtr hWnd, bool turnon);

错误


         [DllImport("user32.dll")]
        public static extern void SwitchToThisWindow(IntPtr hWnd);   // 漏了东西当然就不对了


作者  | 2015-4-26 4:46:49 | 阅读(10) |评论(0) | 阅读全文>>

所谓的 类class vs与 结构体 struct 的 异同? 区别?

2015-4-26 4:03:37 阅读25 评论0 262015/04 Apr26


http://zh.wikipedia.org/wiki/C%2B%2B%E7%B1%BB

总结,主要有这么几点不同:

1.struct 是值类型,class 是对象类型

2.struct 不能被继承,class 可以被继承

3.struct 默认的访问权限是public,而class 默认的访问权限是private.

4.struct总是有默认的构造函数,即使是重载默认构造函数仍然会保留。这是因为Struct的构造函数是由编译器自动生成的,但是如果重载构造函数,必需对struct中的变量全部初始化。并且Struct的用途是那些描述轻量级的对象,例如Line,Point等,并且效率比较高。class在没有重载构造函数时有默认的无参数构造函数,但是一被重载些默认构造函数将被覆盖。

5.struct的new和class的new是不同的。struct的new就是执行一下构造函数创建一个新实例再对所有的字段进行Copy。而class则是在堆上分配一块内存然后再执行构造函数,struct的内存并不是在new的时候分配的,而是在定义的时候分配


像类一样,结构 (struct) 是能够包含数据成员和函数成员的数据结构,但是与类不同,结构是值类型,不需要堆分配。结构类型的变量直接存储该结构的数据,而类类型的变量则存储对动态分配的对象的引用。结构类型不支持用户指定的继承,并且所有结构类型都隐式地从类型 object 继承。

结构对于具有值语义的小型的数据结构特别有用。复数、坐标系中的点或字典中的“键-值”对都是结构的典型示例。对小型数据结构而言,使用结构而不使用类会大大节省应用程序分配的内存量。例如,下面的程序创建并初始化一个含有 100 个点的数组。对于作为类实现的 Point,出现了 101 个实例对象,其中,数组需要一个,它的 100 个元素每个都需要一个。

class Point
{
public int x, y;

public Point(int x, int y) {
this.x = x;
this.y = y;
}
}

class Test
{
static void Main() {
Point[] points = new Point[100];
for (int i = 0; i < 100; i++) points[i] = new Point(i, i);
}
}

一种替代办法是将 Point 定义为结构。

struct Point
{
public int x, y;

public Point(int x, int y) {
this.x = x;
this.y = y;
}
}

现在,只有一个对象被实例化(即用于数组的那个对象),而 Point 实例以值的形式直接内联存储在数组中。

结构构造函数也是使用 new 运算符调用,但是这并不意味着会分配内存。与动态分配对象并返回对它的引用不同,结构构造函数直接返回结构值本身(通常是堆栈上的一个临时位置),然后根据需要复制该结构值。

对于类,两个变量可能引用同一对象,因此对一个变量进行的操作可能影响另一个变量所引用的对象。对于结构,每个变量都有自己的数据副本,对一个变量的操作不可能影响另一个变量。例如,下面的代码段产生的输出取决于 Point 是类还是结构。

Point a = new Point(10, 10);
Point b = a;
a.x = 20;
Console.WriteLine(b.x);

如果 Point 是类,输出将是 20,因为 a 和 b 引用同一对象。如果 Point 是结构,输出将是 10,因为 a 对 b 的赋值创建了该值的一个副本,因此接下来对 a.x 的赋值不会影响 b 这一副本。

前一示例突出了结构的两个限制。首先,复制整个结构通常不如复制对象引用的效率高,因此结构的赋值和值参数传递可能比引用类型的开销更大。其次,除了 ref 和 out 参数,不可能创建对结构的引用,这样限制了结构的应用范围。

总结,主要有这么几点不同:

1.struct 是值类型,class 是对象类型

2.struct 不能被继承,class 可以被继承

3.struct 默认的访问权限是public,而class 默认的访问权限是private.

4.struct总是有默认的构造函数,即使是重载默认构造函数仍然会保留。这是因为Struct的构造函数是由编译器自动生成的,但是如果重载构造函数,必需对struct中的变量全部初始化。并且Struct的用途是那些描述轻量级的对象,例如Line,Point等,并且效率比较高。class在没有重载构造函数时有默认的无参数构造函数,但是一被重载些默认构造函数将被覆盖。

5.struct的new和class的new是不同的。struct的new就是执行一下构造函数创建一个新实例再对所有的字段进行Copy。而class则是在堆上分配一块内存然后再执行构造函数,struct的内存并不是在new的时候分配的,而是在定义的时候分配

==================================================================================================


class和struct语法几乎相同,但其本质却截然不同:class是引用类型,struct是值类型,也就是说在内存中存储方式有别,由此产生的一系列差异性。

class(类)是面向对象编程的基本概念,是一种自定义数据结构类型,通常包含字段、属性、方法、构造函数、索引器、事件等。在.NET中,所有的类都继承自System.Object类,是一种引用类型,也就是说,当我们new出一个类的实例时,对象保存了该实例实际数据的引用地址,而对象的值保存在托管堆中。

struct(结构)是一种值类型,用于将一组相关的信息变量组织成为一个单一的变量实体。所有的结构都继承自System.ValueType类,是一种值类型,我们可以像使用int和char一样去使用struct。struct实例分配在线程的堆栈上,它本身存储了值,而不是指向该值的指针。

了解了class和struct的本质,我们可以通过分析和实验来总结二者的区别:

(1)关于实质:class是引用类型,struct是值类型

(2)关于职能:class是行为的封装,用来表述对象,而struct是数据的封装,用来储存数据

(3)关于继承:class支持继承自类和接口;而struct只能支继承接口。struct不能从class继承,也不能作为class的基类。

(4)关于构造函数:class可以声明无参构造函数,可以声明析构函数;而struct只能声明带参数构造函数,且不能声明析构函数。

(5)关于实例化:class要使用new关键字;而struct可以不使用new关键字,struct在声明时就进行了初始化过程,所有的成员变量均默认为0或null。

(6)关于抽象:class可以实抽象类(abstract),可以声明抽象函数;而struct不能。

(7)关于重载:class可以声明protected成员、virtual成员、sealed成员和override成员;而struct不可以,但是值得注意的是,struct可以重载System.Object的3个虚方法,Equals()、ToString()和GetHashTable()。

(8)关于比较:两个class的比较有Equals和==两种,即值相等和引用相同;而两个struct可以直接通过==来判断。

(9)关于销毁:class实例由垃圾回收机制来保证内存的回收处理;而struct变量使用完后立即自动解除内存分配。

(10)关于参数传递:class变量是以按址方式传递;而struct变量是以按值方式传递的。

既然class几乎可以完全替代struct来实现所有的功能,那么struct还有存在的必要吗?至少在以下情况下,我们应该考虑使用struct来代替class:

  1. 实现一个用于存储数据的结构时,可以考虑struct。
  2. 考虑与某些非托管代码通信的兼容性问题时,可以考虑struct。http://witmax.cn/csharp-class-vs-struct.html


C++中类class与结构体struct的异同区别

原文链接: http://blog.csdn.net/yangbo_hbzjk/article/details/7448910

结构体struct是C语言中用来封装类似于类的模块。

因为C++设计时定下的一项原则:必须完全兼容C语言,所以就允许C++下使用结构体类型了,并且在C++中的结构体类型支持成员函数。在此基础上扩展了面向对象思想,有了Class类,其实作用和原理都等同与结构体类型struct。

什么时候用struct什么时候用class呢?

如果希望成员是公用的,使用struct比较方便,如果希望部分成员私有,宜用class。建议尽量使用class来建立类,符合C++风格。

http://blog.csdn.net/swanzy/article/details/3130331

从语法上,在C++中(只讨论C++中)。class和struct做类型定义时只有两点区别: 
(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理; 
(二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。 
除了这两点,class和struct基本就是一个东西。语法上没有任何其它区别。 

不能因为学过C就总觉得连C++中struct和class都区别很大,下面列举的说明可能比较无聊,因为struct和class本来就是基本一样的东西,无需多说。但这些说明可能有助于澄清一些常见的关于struct和class的错误认识: 
(1)都可以有成员函数;包括各类构造函数,析构函数,重载的运算符,友元类,友元结构,友元函数,虚函数,纯虚函数,静态函数; 
(2)都可以有一大堆public/private/protected修饰符在里边; 
(3)虽然这种风格不再被提倡,但语法上二者都可以使用大括号的方式初始化:A a = {1, 2, 3};不管A是个struct还是个class,前提是这个类/结构足够简单,比如所有的成员都是public的,所有的成员都是简单类型,没有显式声明的构造函数。 
(4)都可以进行复杂的继承甚至多重继承,一个struct可以继承自一个class,反之亦可;一个struct可以同时继承5个class和5个struct,虽然这样做不太好。 
(5)如果说class的设计需要注意OO的原则和风格,那么没任何理由说设计struct就不需要注意。 
(6)再次说明,以上所有说法都是指在C++语言中,至于在C里的情况,C里是根本没有“class”,而C的struct从根本上也只是个包装数据的语法机制。 
--------------------------------------------------------------- 
http://blog.csdn.net/swanzy/article/details/3130331
最后,作为语言的两个关键字,除去定义类型时有上述区别之外,另外还有一点点:“class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数。


http://www.programmer-club.com.tw/ShowSameTitleN/csharp/1692.html

struct有支援方法,不然Int32.Parse()是什麼東西
struct 型別是一種數值型別,可以包含建構函式、常數、欄位、方法、屬性、索引子、運算子和巢狀型別 (Nested Type),結構也能實作介面。
結構不可以宣告預設的 (無參數的) 的建構函式。
不過可以使用有參數的建構函式

public struct Point 
{
   public int x, y;

   public Point(int p1, int p2) 
   {
     x = p1;
     y = p2; 
   }
}

Point point = new Point(10,10);


補充一下:
而且存取structure裡的memeber比存取class裡的member要快一點

相對2個而言

struct 全部成員為公有 public

class 成員有公有 保護 私有 
而class 因物件導向 所以用公有成員存取私有成員
但因資料封裝性質 有時也會用struct 因不想破壞物件導向特性



http://www.cnblogs.com/tangself/archive/2009/12/10/1621416.html

NET中class与struct的区别简析

在没有class的面向过程的编程时代,struct是封装数据的利器,没它不行。但自从面向对象编程以来,class横空出世,大家高呼着“万事万物皆对象”,把class含在嘴里,握在手里,基本上使用class可以替代struct的任何场合。但是各位不要忘了“存在必有其价值”,所以struct还是有其作用和优势的地方的,要知道如何恰到好处的使用,就需先彻底了解二者的区别。

 

    很多时候一提起class和struct,可能很多初学朋友看不出它们兄弟俩有啥区别,的确语法几乎相同,但其本质却截然不同:class是引用类型,struct是值类型,也就是说在内存中存储方式有别,由此产生的一系列差异性。所以只有深刻的理解内存分配的相关内容,才能更好的驾驭。

    class(类)是面向对象编程的基本概念,是一种自定义数据结构类型,通常包含字段、属性、方法、构造函数、索引器、事件等。在.NET中,所有的类都继承自System.Object类,是一种引用类型,也就是说,当我们new出一个类的实例时,对象保存了该实例实际数据的引用地址,而对象的值保存在托管堆中。

 

    struct(结构)是一种值类型,用于将一组相关的信息变量组织成为一个单一的变量实体。所有的结构都继承自System.ValueType类,是一种值类型,我们可以像使用int和char一样去使用struct。struct实例分配在线程的堆栈上,它本身存储了值,而不是指向该值的指针。

 

了解了class和struct的本质,我们可以通过分析和实验来总结二者的区别了:

(1)关于实质:class是引用类型,struct是值类型
(2)关于职能:class是行为的封装,用来表述对象,而struct是数据的封装,用来储存数据
(3)关于继承:class支持继承自类和接口;而struct只能支继承接口。struct不能从class继承,也不能作为class的基类。
(4)关于构造函数:class可以声明无参构造函数,可以声明析构函数;而struct只能声明带参数构造函数,且不能声明析构函数。
(5)关于实例化:class要使用new关键字;而struct可以不使用new关键字,struct在声明时就进行了初始化过程,所有的成员变量均默认为0或null。
(6)关于抽象:class可以实抽象类(abstract),可以声明抽象函数;而struct不能。
(7)关于重载:class可以声明protected成员、virtual成员、sealed成员和override成员;而struct不可以,但是值得注意的是,struct可以重载System.Object的3个虚方法,Equals()、ToString()和GetHashTable()。
(8)关于比较:两个class的比较有Equals和==两种,即值相等和引用相同;而两个struct可以直接通过==来判断。
(9)关于销毁:class实例由垃圾回收机制来保证内存的回收处理;而struct变量使用完后立即自动解除内存分配。
(10)关于参数传递:class变量是以按址方式传递;而struct变量是以按值方式传递的。

 

    既然class几乎可以完全替代struct来实现所有的功能,那么struct还有存在的必要吗?至少在以下情况下,我们应该考虑使用struct来代替class:

    实现一个用于存储数据的结构时,可以考虑struct。
    考虑与某些非托管代码通信的兼容性问题时,可以考虑struct。

所有这些是struct有一席之地的理由,当然也许还有其他的更多说法,只是我不知道罢了。


引用一个经典示例

(1)定义接口

 interface IPerson{
void GetSex();
}

(2)定义类

    public class Person
    {
        public Person()
        {
        }

        public Person(string name, int age)
        {
            _name = name;
            _age = age;
        }

        private string _name;

        public string Name
        {
          get { return _name; }
          set { _name = value; }
        }

        private int _age;

        public int Age
        {
          get { return _age; }
          set { _age = value; }
        }
    }

(3)定义结构

    //可以继承自接口,不可继承类或结构
    struct Family: IPerson
    {
        public string name;
        public int age;
        public bool sex;
        public string country;
        public Person person;

        //不可以包含显式的无参构造函数和析构函数
        public Family(string name, int age,

                  bool sex, string country, Person person)
        {
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.country = country;
            this.person = person;
        }

        //不可以实现protected、virtual、sealed和override成员
        public void GetSex()
        {
            if (sex)
                Console.WriteLine(person.Name + " is a boy.");
            else
                Console.WriteLine(person.Name + " is a girl.");
        }

        public void ShowPerson()
        {
            Console.WriteLine("This is {0} from {1}",

                            new Person(name, 22).Name, country);
        }

        //可以重载ToString虚方法
        public override string ToString()
        {
            return String.Format("{0} is {1}, {2} from {3}",

                person.Name, age, sex ? "Boy" : "Girl", country);
        }
    }

    本文关于 class和struct的讨论到此为止,在.NET中,关于class和struct的讨论将涉及到对引用类型和值类型的认识,并且进一步将触角伸向变量内存分配这一高级主题,所以我们有必要来了解其运行机制,把握区别和应用场合,以便在平常的系统设计中把握好对这一概念层次的内容。




作者  | 2015-4-26 4:03:37 | 阅读(25) |评论(0) | 阅读全文>>

C# 为什么死活都捕捉不到键盘操作? 怎么办

2015-4-25 15:17:31 阅读10 评论0 252015/04 Apr25

How to: Handle Keyboard Input at the Form Level

// Detect all numeric characters at the form level and consume 1,  

// 4, and 7. Note that Form.KeyPreview must be set to true for this  // event handler to be called. 

https://msdn.microsoft.com/en-us/library/ms171538(v=vs.110).aspx

作者  | 2015-4-25 15:17:31 | 阅读(10) |评论(0) | 阅读全文>>

ERROR: intellisense identifier is undefined

2015-4-19 10:33:30 阅读17 评论0 192015/04 Apr19




just f##king ignore it, ok


https://forums.unrealengine.com/showthread.php?56308-IntelliSense-identifier-quot-FGuid-quot-is-undefined

https://docs.unrealengine.com/latest/INT/Programming/Development/VisualStudioSetup/index.html

作者  | 2015-4-19 10:33:30 | 阅读(17) |评论(0) | 阅读全文>>

using System.Windows.Media; // you must do this

2015-4-12 1:29:23 阅读26 评论0 122015/04 Apr12



http://stackoverflow.com/questions/22098595/add-presentationcore-assembly-reference-in-web-project

PresentationCore is a part of WPF, which is a .NET Framework built-in feature. You should be able to add it easily for both MVC and classic ASP.NET for .NET Framework v3.5 or later.

Please note that the assembly name used by PresentationCore.dll is plain PresentationCore. Itdoes not have any prefixes (e.g. System.PresentationCore, Microsoft.PresentationCore). Perhaps this is the reason you're having trouble finding it on the Framework Assemblies list.

enter image description here

answered Feb 28 '14 at 15:36
Aoi Karasu
2,79321846

作者  | 2015-4-12 1:29:23 | 阅读(26) |评论(0) | 阅读全文>>

http://www.edaboard.com/thread273835.html


A solution: PL2303 Error Code 10 and how to solve it on Win7 64-bit

I thought it worth pasting here, since possibly many people use USB-Serial converters. I have several different types, and the PL2303 ones don't work on Win7 64-bit. Maybe they are not "genuine" PL2303 chips inside. Mine were purchased from Maplin UK.

Anyway, the root of the problem is that the most recent drivers are incompatible with some of the PL2303 USB Serial converters, and the older (working) driver cannot be found on official sites (maybe to encourage people to purchase new USB to Serial interfaces).

First step is to uninstall from Device Manager if you have already plugged in the device. The drivers that you need can be found via google; search for a file called
PL2303_Prolific_GPS_AllInOne_1013.exe (file size was 3,052,939 bytes).
Once found, double-click to install. After installing, the PL2303 USB Serial converter _may_ work on Windows 7.

If you still get an error marker against the device in Device Manager (and possibly an Error code 10 if you look at the properties of the device) then the problem is, that Windows is still loading the incorrect driver.

The trick to getting it to operate is a little convoluted but it works:
Firstly, confirm the symptom by looking at the Driver settings in the Device Manager. If the Driver Version is higher than 3.3.2.105, then Windows is picking up a more recent driver.
To solve this, you need the help of a text editor that can "Find in Files". An example is UltraEdit. Use the editor (or an alternate method) to search for all *.inf files in C:\Windows\inf that have the following text inside them "Prolific USB-to-Serial". My search found two files; one was called oem42.inf and the other was called oem43.inf. The numbers will vary.
Inspect the files in a text editor. In my case, the oem42.inf file was the culprit; it contained this text on around line 12: DriverVer=11/12/2012,3.4.42.258The oem43.inf was the result of installing the 
PL2303_Prolific_GPS_AllInOne_1013.exe software, and it had this correct text:
DriverVer=10/27/2008,3.3.2.105
So, I needed to disable the oem42.inf file because it refers to the more recent driver that doesn't work. The easiest way to disable it is to change the filename from oem42.inf to oem42_inf_backup (without the .inf suffix).
After that, plug in the USB Serial converter, and the correct .inf file will be used to install the driver. Success.


http://www.edaboard.com/thread273835.html

作者  | 2015-3-31 1:31:53 | 阅读(68) |评论(0) | 阅读全文>>

运算符 : 移位运算符 << , >>

2015-3-24 5:41:55 阅读83 评论0 242015/03 Mar24

 <<
左移运算符 (<<) 将第一个操作数向左移动第二个操作数指定的位数。第二个操作数的类型必须是 int
备注:
如果第一个操作数是 int  uint32 位数),则移位数由第二个操作数的低 5 位给出。
如果第一个操作数是 long  u ong64 位数),则移位数由第二个操作数的低 6 位给出。
第一个操作数的高序位被放弃,低序空位用 0 填充。移位操作从不导致溢出。
用户定义的类型可重载 << 运算符(请参见 operator);第一个操作数的类型必须为用户定义的类型,第二个操作数的类型必须为 int。重载二元运算符时,也会隐式重载相应的赋值运算符(如果有)。

位左移运算将整个数按位左移若干位,左移后空出的部分0。比如:8位的byte型变量 
byte a=0x65(即二进制的01100101),将其左移3位:a<<3的结果是0x27(即二进制的00101000)。 


 >>
右移运算符 (>>) 将第一个操作数向右移动第二个操作数所指定的位数。
备注:
如果第一个操作数为 int  uint32 位数),则移位数由第二个操作数的低五位给出(第二个操作数 & 0x1f)。
如果第一个操作数为 long  ulong64 位数),则移位数由第二个操作数的低六位给出(第二个操作数 & 0x3f)。
如果第一个操作数为 int  long,则右移位是算术移位(高序空位设置为符号位)。如果第一个操作数为 uint  ulong 类型,则右移位是逻辑移位(高位填充 0)。
用户定义的类型可重载 >> 运算符;第一个操作数的类型必须为用户定义的类型,第二个操作数的类型必须为 int。有关更多信息,请参见 operator。重载二元运算符时,也会隐式重载相应的赋值运算符(如果有)。



位右移运算将整个数按位右移若干位,右移后空出的部分填0。比如:8位的byte型变量 
Byte a=0x65(既(二进制的01100101))将其右移3位:a>>3的结果是0x0c(二进制00001100)。 
在进行位与、或、异或运算时,如果两个运算对象的类型一致,则运算结果的类型就是运算对象的类型。比如对两个int变量a和b做与运算,运算结果的类型还是int型。如果两个运算 
对象的类型不一致,则C#要对不一致的类型进行类型转换,变成一致的类型,然后进行运算。
类型转换的规则同算术运算中整型量的转换则一致。 
位运算符连接整型量而成的表达式就是位运算表达式。

https://msdn.microsoft.com/zh-cn/library/aa691377(v=vs.71).aspx

<< 和 >> 运算符用于执行移位运算。

shift-expression:(移位表达式:)
additive-expression(加法表达式)
shift-expression   <<   additive-expression(移位表达式   <<   加法表达式)
shift-expression   >>   additive-expression(移位表达式   >>   加法表达式)

对于 x << count 或 >> count 形式的运算,应用二元运算符重载决策(第 7.2.4 节)以选择特定的运算符实现。操作数转换为所选运算符的参数类型,结果的类型是该运算符的返回类型。

当声明重载移位运算符时,第一个操作数的类型必须总是包含运算符声明的类或结构,并且第二个操作数的类型必须总是 int

下面列出了预定义的移位运算符。

  • 左移位:
    int operator <<(int x, int count); uint operator <<(uint x, int count); long operator <<(long x, int count); ulong operator <<(ulong x, int count); 

<< 运算符将 x 向左位移若干个位,具体计算方法如下所述。

放弃 x 中经移位后会超出结果类型范围的那些高序位,将其余的位向左位移,将空出来的低序位均设置为零。

  • 右移位:
    int operator >>(int x, int count); uint operator >>(uint x, int count); long operator >>(long x, int count); ulong operator >>(ulong x, int count); 

>> 运算符将 x 向右位移若干个位,具体计算方法如下所述。

当 x 为 int 或 long 类型时,放弃 x 的低序位,将剩余的位向右位移,如果 x 非负,则将高序空位位置设置为零,如果 x 为负,则将其设置为 1。

当 x 为 uint 或 ulong 类型时,放弃 x 的低序位,将剩余的位向右位移,并将高序空位位置设置为零。

对于预定义运算符,位移的位数按下面这样计算:

  • 当 x 的类型为 int 或 uint 时,位移计数由 count 的低序的 5 位给出。换言之,位移计数由 count & 0x1F 计算出。
  • 当 x 的类型为 long 或 ulong 时,位移计数由 count 的低序的 6 位给出。换言之,位移计数由 count & 0x3F 计算出。

如果计算位移计数的结果为零,则移位运算符只返回 x 的值。

移位运算从不会导致溢出,并且在 checked 和 unchecked 上下文中产生的结果相同。

当 >> 运算符的左操作数为有符号的整型时,该运算符执行算术右移位,在此过程中,操作数的最有效位(符号位)的值扩展到高序空位位置。当>> 运算符的左操作数为无符号的整型时,该运算符执行逻辑右移位,在此过程中,高序空位位置总是设置为零。若要执行与由操作数类型确定的不同的移位运算,可以使用显式强制转换。例如,如果 x 是 int 类型的变量,则 unchecked((int)((uint)x >> y)) 运算执行 x 的逻辑右移位。

https://msdn.microsoft.com/zh-cn/library/aa691377(v=vs.71).aspx




http://blog.csdn.net/huwei2003/article/details/9114541

C#移位运算(左移和右移) 
 


  C#是用<<(左移) 和 >>(右移) 运算符是用来执行移位运算。

  左移 (<<)

  将第一个操作数向左移动第二个操作数指定的位数,空出的位置补0。
  左移相当于乘. 左移一位相当于乘2;左移两位相当于乘4;左移三位相当于乘8。

  x<<1= x*2 
  x<<2= x*4 
  x<<3= x*8 
  x<<4= x*16

  同理, 右移即相反:

  右移 (>>) 
  将第一个操作数向右移动第二个操作数所指定的位数,空出的位置补0。

  右移相当于整除. 右移一位相当于除以2;右移两位相当于除以4;右移三位相当于除以8。

  x>>1= x/2 
  x>>2= x/4 
  x>>3= x/8 
  x>>4=x/16


 int i = 7;
 int j = 2;
 Console.WriteLine(i >> j);   //输出结果为1


  当声明重载C#移位运算符时,第一个操作数的类型必须总是包含运算符声明的类或结构,并且第二个操作数的类型必须总是 int,如:

class Program    
{        
 static void Main(string[] args)        
 {            
  ShiftClass shift1 = new ShiftClass(5, 10);            
  ShiftClass shift2 = shift1 << 2;            
  ShiftClass shift3 = shift1 >> 2;            
  Console.WriteLine("{0} << 2 结果是:{1}", shift1.valA,  shift2.valA);            
  Console.WriteLine("{0} << 2 结果是:{1}", shift1.valB,shift2.valB);            
  Console.WriteLine("{0} >> 2 结果是:{1}", shift1.valA,  shift3.valA);            
  Console.WriteLine("{0} >> 2 结果是:{1}", shift1.valB, shift3.valB);            
  Console.ReadLine();        
 }        
 public class ShiftClass        
 {           
  public int valA;           
  public int valB;            
  public ShiftClass(int valA, int valB)            
  {                
   this.valA = valA;                
   this.valB = valB;            
  }            
  public static ShiftClass operator <<(ShiftClass shift, int count)            
  {                
   int a = shift.valA << count;                
   int b = shift.valB << count;                
   return new ShiftClass(a, b);            
  }            
  public static ShiftClass operator >>(ShiftClass shift, int count)            
  {                
   int a = shift.valA >> count;                
   int b = shift.valB >> count;                
   return new ShiftClass(a, b);            
  }        
 }    
}

因为位移比乘除速度快.对效率要求高,而且满足2的幂次方的乘除运方,可以采用位移的方式进行。

http://blog.csdn.net/huwei2003/article/details/9114541

作者  | 2015-3-24 5:41:55 | 阅读(83) |评论(0) | 阅读全文>>

Endianness 端序,尾序

2015-3-19 9:26:22 阅读78 评论0 192015/03 Mar19

字节顺序,又称端序尾序英语Endianness)。在计算机科学领域中,是跨越多字节的程序对象的存储规则。


在几乎所有的机器上,多字节对象都被存储为连续的字节序列。例如在C语言中,一个类型为int的变量x地址为0x100,那么其对应地址表达式&x的值为0x100。且x的四个字节将被存储在存储器0x100, 0x101, 0x102, 0x103位置。[1]

而存储地址内的排列则有两个通用规则。一个多位的整数将按照其存储地址的最低或最高字节排列。如果最低有效字节最高有效字节的前面,则称小端序;反之则称大端序。在网络应用中,字节序是一个必须被考虑的因素,因为不同机器类型可能采用不同标准的字节序,所以均按照网络标准转化。

例如假设上述变量x类型为int,位于地址0x100处,它的十六进制为0x01234567,地址范围为0x100~0x103字节,其内部排列顺序依赖于机器的类型。大端法从首位开始将是:0x100: 01, 0x101: 23,..。而小端法将是:0x100: 67, 0x101: 45,..



endian”一词来源于乔纳森·斯威夫特的小说格列佛游记。小说中,小人国为水煮蛋该从大的一端(Big-End)剥开还是小的一端(Little-End)剥开而争论,争论的双方分别被称为“大端派”和“小端派”。以下是1726年关于大小端之争历史的描述:

“我下面要告诉你的是,Lilliput和Blefuscu这两大强国在过去36个月里一直在苦战。战争开始是由于以下的原因:我们大家都认为,吃鸡蛋前,原始的方法是打破鸡蛋较大的一端,可是当今皇帝的祖父小时候吃鸡蛋,一次按古法打鸡蛋时碰巧将一个手指弄破了。因此他的父亲,当时的皇帝,就下了一道敕令,命令全体臣民吃鸡蛋时打破鸡蛋较小的一端,违令者重罚。老百姓们对这项命令极其反感。历史告诉我们,由此曾经发生过6次叛乱,其中一个皇帝送了命,另一个丢了王位。这些叛乱大多都是由Blefuscu的国王大臣们煽动起来的。叛乱平息后,流亡的人总是逃到那个帝国去寻求避难。据估计,先后几次有11000人情愿受死也不肯去打破鸡蛋较小的一端。关于这一争端,曾出版过几百本大部著作,不过大端派的书一直是受禁的,法律也规定该派任何人不得做官。”[2]

1980年,Danny Cohen,一位网络协议的早期开发者,在其著名的论文"On Holy Wars and a Plea for Peace"中,为平息一场关于字节该以什么样的顺序传送的争论,而第一次引用了该词。[3]



字节顺序[编辑]

在哪种字节顺序更合适的问题上,人们表现得非常情绪化,实际上,就像鸡蛋的问题一样,没有技术上的原因来选择字节顺序规则,因此,争论沦为关于社会政治问题的争论,只要选择了一种规则并且始终如一地坚持,其实对于哪种字节排序的选择是任意的。

对于单一的字节(a byte),大部分处理器以相同的顺序处理位元(bit),因此单字节的存放方法和传输方式一般相同。

对于多字节数据,如整数(32位机中一般占4字节),在不同的处理器的存放方式主要有两种,以内存中0x0A0B0C0D的存放方式为例,分别有以下几种方式:

注: 0x前缀代表十六进制。

大端序[编辑]

大端序(英:big-endian)或称大尾序

Big-Endian.svg
  • 数据以8bit为单位:
地址增长方向  →
...0x0A0x0B0x0C0x0D...

示例中,最高位字节是0x0A 存储在最低的内存地址处。下一个字节0x0B存在后面的地址处。正类似于十六进制字节从左到右的阅读顺序。

  • 数据以16bit为单位:
地址增长方向  →
...0x0A0B0x0C0D...

最高的16bit单元0x0A0B存储在低位。

小端序[编辑]

小端序(英:little-endian)或称小尾序

Little-Endian.svg
  • 数据以8bit为单位:
地址增长方向  →
...0x0D0x0C0x0B0x0A...

最低位字节是0x0D 存储在最低的内存地址处。后面字节依次存在后面的地址处。

  • 数据以16bit为单位:
地址增长方向  →
...0x0C0D0x0A0B...

最低的16bit单元0x0D0C存储在低位。

  • 更改地址的增长方向:

当更改地址的增长方向,使之由右至左时,表格更具有可阅读性。

←  地址增长方向
...0x0A0x0B0x0C0x0D...

最低有效位(LSB)是0x0D 存储在最低的内存地址处。后面字节依次存在后面的地址处。

←  地址增长方向
...0x0A0B0x0C0D...

最低的16bit单元0x0C0D存储在低位。

混合序[编辑]

混合序(英:middle-endian)具有更复杂的顺序。以PDP-11为例,0x0A0B0C0D被存储为:

  • 32bit在PDP-11的存储方式
地址增长方向  →
...0x0B0x0A0x0D0x0C...

可以看作最高的16bit位和低位以大端序存储,但16bit内部以小端存储。

处理器体系[编辑]

网络序[编辑]

网络传输一般采用大端序,也被称之为网络字节序,或网络序IP协议中定义大端序为网络字节序。

伯克利socket API定义了一组转换函数,用于16和32bit整数在网络序和本机字节序之间的转换。htonl,htons用于本机序转换到网络序;ntohl,ntohs用于网络序转换到本机序。

位序[编辑]

一般用于描述串行设备的传输顺序。网络协议中只有数据链路层的底端会涉及到。

小端序(先传低位)的串行协议[编辑]

大端序(先传高位)的串行协议[编辑]


作者  | 2015-3-19 9:26:22 | 阅读(78) |评论(0) | 阅读全文>>


11down voteaccepted

Visual Studio 2010:

right click on project

Menu select "Add reference..."

select tab "Browse"

select directory "C:\windows\assembly\ GAC\Microsoft.DirectX.AudioVideoPlayback

The DLL to reference is in that folder.

answered Oct 25 '10 at 13:57
Robert Harvey?
112k23181299

作者  | 2015-3-15 20:22:09 | 阅读(42) |评论(0) | 阅读全文>>

波形头损坏: 没有做这个 Stream.Position = 0;

2015-3-15 20:00:16 阅读39 评论0 152015/03 Mar15



波形头损坏:  没有做这个 Stream.Position = 0; 

作者  | 2015-3-15 20:00:16 | 阅读(39) |评论(0) | 阅读全文>>

octave for Windows8 windows 8.1

2015-3-15 4:05:36 阅读43 评论0 152015/03 Mar15

If you got any problems while running Windows 8 or libstdc++-6.dll errors, try this octave-gui.bat file and place it into your octave-3.8.0 folder (e.g. `C:/octave-3.8.0/`).

 @echo off set PATH=%CD%\bin\ start octave --force-gui -i --line-editing exit


最简单就是一行:

C:\Octave-3.6.4\bin\octave  -i --line-editing

问题解决。


记得 pwd  = present working directory.

作者  | 2015-3-15 4:05:36 | 阅读(43) |评论(0) | 阅读全文>>

No overload for method "xxxxx" takes 0 arguments 为什么

2015-3-14 19:35:47 阅读42 评论0 142015/03 Mar14



No overload for method  "xxxxx"  takes 0 arguments 为什么

就是没有给它参数呗, 忘记给它参数了.



            try
            {
                string ls_disp;
                uint lud_vol = 0;
                ls_disp = waveOutGetVolume(IntPtr.Zero, out lud_vol).ToString();
                MessageBox.Show(ls_disp, " Result: ");

            }
            catch (Exception)
            {
            }

作者  | 2015-3-14 19:35:47 | 阅读(42) |评论(0) | 阅读全文>>

ZLIB, zlib where to download a reliable version?

2015-3-12 8:17:21 阅读139 评论0 122015/03 Mar12


ZLIB, zlib    where to download a reliable version?

here:
http://www.zlib.net/
http://www.zlib.net/
http://www.zlib.net/
http://www.zlib.net/
http://www.zlib.net/
http://www.zlib.net/
http://www.zlib.net/



zlib

A Massively Spiffy Yet Delicately Unobtrusive Compression Library
(Also Free, Not to Mention Unencumbered by Patents)

(Not Related to the Linux zlibc Compressing File-I/O Library)


Welcome to the zlib home page, web pages originally created by Greg Roelofs and maintained by Mark Adler. If this page seems suspiciously similar to the PNG Home Page, rest assured that the similarity is completely coincidental. No, really.

zlib was written by Jean-loup Gailly (compression) and Mark Adler (decompression).

Current release:

zlib 1.2.8

April 28, 2013

Version 1.2.8 fixes a very rare bug in decompression. All users are encouraged to upgrade immediately. Version 1.2.8 also has these improvements:

  • Add new inflateGetDictionary() function
  • Fix bug where gzopen() immediately followed by gzclose() would write an empty file instead of an empty gzip stream.
  • Fix bug in gzclose() when gzwrite() runs out of memory
You can also look at the complete Change Log.

Version 1.2.7 has many portability improvements over 1.2.6, and has these enhancements:

  • Fix bug in gzclose_w() when gzwrite() fails to allocate memory
  • Add "x" (O_EXCL) and "e" (O_CLOEXEC) modes support to gzopen()
  • Add gzopen_w() in Windows for wide character path names
  • Fix type mismatch between get_crc_table() and crc_table

Version 1.2.6 has many changes over 1.2.5, including these improvements:

  • gzread() can now read a file that is being written concurrently
  • gzgetc() is now a macro for increased speed
  • Added a 'T' option to gzopen() for transparent writing (no compression)
  • Added deflatePending() to return the amount of pending output
  • Allow deflateSetDictionary() and inflateSetDictionary() at any time in raw mode
  • deflatePrime() can now insert bits in the middle of the stream
  • ./configure now creates a configure.log file with all of the results
  • Added a ./configure --solo option to compile zlib with no dependency on any libraries
  • Fixed a problem with large file support macros
  • Fixed a bug in contrib/puff
  • Many portability improvements

Version 1.2.5 fixes bugs in gzseek() and gzeof() that were present in version 1.2.4 (March 2010). All users are encouraged to upgrade immediately.

Version 1.2.4 has many changes over 1.2.3, including these improvements:

  • Fixed bugs in adler32_combine()compressBound(), and deflateBound()
  • Wholesale replacement of gz* functions with faster versions
  • As part of that, added gzbuffer()gzoffset()gzclose_r(), and gzclose_w() functions
  • Faster Z_HUFFMAN_ONLY and Z_RLE compression for images and other specialized compression
  • Added flush options Z_BLOCK to deflate() and Z_TREES to inflate() for finer control
  • Added inflateReset2() and inflateMark() functions, the latter to aid in random access applications
  • Added LFS (Large File Summit) support for 64-bit file offsets and many other portability improvements
  • Updated examples in examples/ and updated third-party contributions in contrib/

If you are using libxml version 2.7.6 or earlier, you will need to update libxml to version 2.7.7 or later before installing zlib version 1.2.4 or later. libxml 2.7.6 and earlier made unnecessary assumptions about the undocumented internal structure of zlib that were changed in zlib 1.2.4 and result in libxml crashing. This was fixed in libxml 2.7.7.

Version 1.2.3 (July 2005) eliminates potential security vulnerabilities in zlib 1.2.1 and 1.2.2, so all users of those versions should upgrade immediately. The following important fixes are provided in zlib 1.2.3 over 1.2.1 and 1.2.2:

  • Eliminate a potential security vulnerability when decoding invalid compressed data
  • Eliminate a potential security vulnerability when decoding specially crafted compressed data
  • Fix a bug when decompressing dynamic blocks with no distance codes
  • Fix crc check bug in gzread() after gzungetc()
  • Do not return an error when using gzread() on an empty file

Versions 1.1.4 (March 2002) and later eliminate an earlier potential security vulnerability, see details here. Any software that is linked against or derived from an earlier version of zlib should be upgraded immediately.

A partial list of over 500 applications using zlib is given here.


Canonical URL: http://zlib.net/ (US)


[DDJ's zlib image]zlib is designed to be a free, general-purpose, legally unencumbered -- that is, not covered by any patents -- lossless data-compression library for use on virtually any computer hardware and operating system. The zlib data format is itself portable across platforms. Unlike the LZW compression method used in Unix compress(1) and in the GIF image format, the compression method currently used in zlib essentially never expands the data. (LZW can double or triple the file size in extreme cases.) zlib's memory footprint is also independent of the input data and can be reduced, if necessary, at some cost in compression. A more precise, technical discussion of both points is available on another page.

zlib was written by Jean-loup Gailly (compression) and Mark Adler (decompression). Jean-loup is also the primary author/maintainer ofgzip(1), the author of the comp.compression FAQ list and the former maintainer of Info-ZIP's Zip; Mark is also the author of gzip's andUnZip's main decompression routines and was the original author of Zip. Not surprisingly, the compression algorithm used in zlib is essentially the same as that in gzip and Zip, namely, the `deflate' method that originated in PKWARE's PKZIP 2.x.

Mark and Jean-loup can be reached by e-mail at zlib email address. Please read the FAQ and the manual before asking us for help. We are getting too many questions which already have an answer in the zlib documentation.

Greg, Mark and/or Jean-loup will add some more stuff here when they think of something to add. For now this page is mainly a pointer to zlib itself and to related links. Note that the deflate and zlib specifications both achieved official Internet RFC status in May 1996, and zlib itself was adopted in version 1.1 of the Java Development Kit (JDK), both as a raw class and as a component of the JAR archive format.

The lovely zlib-vise image above was provided courtesy of Bruce Gardner, art director of Dr. Dobb's Journal. It appears in Mark Nelson's article in the January 1997 issue (see below).


The current release is publicly available here:

 *  zlib source code, version 1.2.8, tar.gz format (558K, MD5 checksum 44d667c142d7cda120332623eab69f40):

 *  US (zlib.net)
 *  Pick a mirror (prdownloads.sourceforge.net)
 *  zlib source code, version 1.2.8, tar.xz format (440K, MD5 checksum 28f1205d8dd2001f26fec1e8c2cebe37):

 *  US (zlib.net)
 *  Pick a mirror (prdownloads.sourceforge.net)
 *  zlib source code, version 1.2.8, zipfile format (678K, MD5 checksum 126f8676442ffbd97884eb4d6f32afb4):

 *  US (zlib.net)
 *  Pick a mirror (prdownloads.sourceforge.net)
 *  zlib compiled DLL, version 1.2.8, zipfile format (139K, MD5 checksum 42eccc2af5bac6b7a1188d7817d03549):

 *  US (zlib.net)
 *  Pick a mirror (prdownloads.sourceforge.net)

Note that zlib is an integral part of libpng and has been tested extensively as part of many PNG-supporting applications.


zlib Information

 *  zlib Frequently Asked Questions
 *  Zlib-announce mailing list
New versions of zlib are announced on this list.
 *  Zlib-devel mailing list
Please do not send questions or comments about zlib to this mailing list. Send those directly to the authors at zlib email address after checking theFAQ and the manual, of course. The zlib-devel list is for the development of zlib—members are contributors to and testers of new versions of zlib.
 *  zlib Manual
 *  zlib Usage Example
 *  zlib Technical Details
 *  zlib-related specifications:
 *  Deflate stream disassembler. infgen.c produces a readable description of a gzip, zlib, or raw deflate stream.
 *  zlib's Deflate Algorithm
 *  zlib's deflate flush modes
 *  zlib License
 *  zlib on github

CRC (Cyclic Redundancy Check) Bonus Information

 *  Ross Williams' classic "A Painless Guide to CRC Error Detection Algorithms"
 *  Code to generate any CRC, with a list of CRC descriptions. crcany.c can take a description of a CRC and compute that CRC efficiently. It includes bit-wise, table-driven byte-wise, and table-driven word-wise CRC algorithms.
 *  Code to modify a message so that it generates the desired CRC. spoof.c takes an abbreviated description of the CRC, the exclusive-or of the current CRC of the message and the desired CRC, the length of the message, and a list of bit locations in a message, and tells you which of those bits should be inverted in the message to get the desired CRC. Note that it does not need the message itself, due to the linearity property of CRCs.

ZIP File Processing Bonus Software

 *  Code to read a zip file as a stream and extract its contents. sunzip.c will read a zip file from stdin and extract the files therein that use compression methods 0, 8, 9, or 12 (stored, deflate, deflate64, or bzip2). It accepts Zip64 input.
 *  Code to merge multiple zip files into a single zip file. zipknit.c accepts Zip64 input files, and will create Zip64 output if the combined size of the merged zip file warrants it. All compression formats are permitted, since no decompression or recompression is performed. Encrypted entries are permitted, and pass through unscathed.


Related External Links

 *  zlib for Linux, both shared and static plus headers (RPM format, many architectures)
 *  zlib for Solaris
 *  zlib for Solaris (alternate)
 *  zlib for SCO Open Server 5.0
 *  zlib for BeOS R5
 *  zlib for Mac OS X: zlib is already included as part of Mac OS X
 *  zlib for Mac OS
 *  zlib for OS/2 (DLL and static version for emx 0.9c, 46k)
(click here if link breaks)
 *  zlib for Palm Pilot
 *  zlib for Newton OS
 *  zlib for Windows CE
 *  zlib for RIM BlackBerry
 *  zlib for Windows 9x/NT/2000/XP/2003 (DLL version, plus related utilities)
 *  zlib for Windows 9x/NT (DLL and static version)
 *  DotNetZip zip file manipulation for .NET, and more (including replacements for the buggy Microsoft GZipStream and DeflateStream classes)
 *  zlib for .NET in C#
 *  zlib DLL wrapper for .NET in C#
 *  zlib DLL wrapper for .NET in VB
 *  Zip for .NET
 *  Mark Nelson's ZlibTool article and Win32 source code for Dr. Dobb's Journal (January 1997)
 *  zlib C++ wrapper for the de>gz*de> functions.
 *  C++ zlib and gzip filters in an iostream framework.
 *  zlib 32-bit OCX (C++ source and binaries for use with Visual Basic 4.x or Delphi 2.0)
(unsupported VB5 binary also available)
 *  zlib Pascal port (Pascal source, tested with Turbo Pascal 7.0 and Delphi 3.02)
(not tested by us, but looks complete and well-maintained)
 *  zlib Delphi 5 interface
(includes compiled object files and corresponding C++ Builder 5 project files)
 *  zlib Perl interface (source code; look for Compress-Zlib*.tar.gz)
 *  zlib Python interface (online manual; part of the standard library as of Python 1.5)
 *  zlib Tcl interface mkZiplib
 *  zlib Haskell interface
 *  zlib Java interface (see also JAR format)
 *  zlib reimplementation in pure Java
(not tested by us, but looks like a good alternative to java.util.zip)
 *  Mark Nelson's JavaZip article (with source code) for Dr. Dobb's Journal (December 1997)
 *  Random access for gzip archives, for Java
 *  Gilles Vollant's zlib-based mini-zip and mini-unzip
(see also Info-ZIP's UnZip, which optionally can be compiled with zlib)
 *  Scott Ludwig's zlib-based CExe executable compressor for Win32
 *  zlib technical issues, including spec errors
 *  zlib information in Japanese
 *  zlib information in Russian
 *  Real World Scanning and Halftones (second edition includes a section on zlib)
 *  Markus Oberhumer's LZO `real-time' data compression library
(not tested by us, but looks like a good alternative if you need more speed and less compression)
 *  lz4, a very fast compression algorithm
(not tested by us, but looks like an even better alternative if you need more speed and less compression)
 *  libbzip2
(not tested by us, but looks like a good alternative if you need more compression and less speed)
 *  PPP Deflate Protocol (RFC 1979)
 *  Info-ZIP Home Page
 *  Portable Network Graphics (PNG) Home Page
 *  gzip Home Page
 *  pigz (parallel gzip) Home Page
 *  DataCompression.info
 *  comp.compression Frequently Asked Questions list


Send comments or questions about zlib to the authors at zlib email address  after checking FAQ and manual
Please report broken links to Mark's email address (PGP key). Last updated December 24th, 2014.



ZLIB is a compression library compatible with the gzip format. It has been written by Jean-Loup Gailly and Mark Adler. It is free software.
The official page is there, but if you are interested only in Windows 95/98/NT/2000/XP/2003 support, you have found the right place.
There is also a page with a discussion list, Zlib-devel -- zlib compression library development discussions.

This page contains stuff built around zLib by Gilles Vollant, maker of WinImage and Smartversion.
It provides a DLL version of the library and pointers to other projects like MiniZip. It also intends to offer support for the DLL version and for assembly code optimisation.

NEW: the source distribution of the zlib DLL is now merged with the standard zlib.

--


Current version (1.2.5):

zlib125.zip - zlib-1.2.5.tar.gz - sources of zlib

zlib125dll.zip - pre-built zlib DLL, compiled with the Microsoft Visual studio 2010 compiler (the compiler is available as free download)

  • This DLL is for Win32-x86. Make sure to define ZLIB_WINAPI before including zlib.h. Read contrib\vstudio\readme.txt file whithin zlib123.zip for more information.

zlib125_masm_obj.zip - Latest assembly code object for zLib 1.25, both 32 bits (x86) and 64 bits (x86-64 for AMD64/Intel EM64T).


Previous version (1.1.4):

zlib114.zip [146K] (or through FTP) - sources of zlib

  • You need that if you want to use zlib in your programs. Officially, zlib does not have a "programmers manual", but a quick read to zlib.h will make your ideas clearer.
    NOTE: this archive is now THE SAME of the standard distribution.

    Take a look at the Users Corner.
    If you are going to rebuild the library by yourself, read the build instructions.
    If you need a Visual Basic interface to zlib, see cmp-z-it.zip or http://www.dogma.net/markn/articles/zlibtool/zlibtool.htm and contrib/visual-basic.txt

zlib114dll.zip [94K] - pre-built zlib DLL

If you want the complete version history for zLib (from 0.95 to 1.1.4), get the multiversion archive zlib.svf, or, from 0.95 to 1.23, zlibnew.svf, and open it withSmartVersion.


Other projects:

Minizip package - Source code that enables to unzip files from a .ZIP file.

  • Formerly named "Unzip package", this package is based on Zlib.
    You will also find an excellent sample that adds a "Send as ZIP-File" command to the MFC Scribble sample. I have included the corresponding Visual C++ 6.0 project.

sfondo.zip [34K] - full source & exe of an MFC app that uses ZLIB.DLL

  • This is a quick & dirty utility that allows you to compress BMP images with gzip to obtain better compression than GIF images, and still use them as background for your desktop.
    To use this program, you need ZLIB.DLL and the MFC30.DLL that comes with 95.

gzip124xN.zip [32K] - NT version 1.24 of GNU gzip

  • It works also under Windows 95.

作者  | 2015-3-12 8:17:21 | 阅读(139) |评论(0) | 阅读全文>>

十进制浮点数怎么显示为比特流

2015-3-8 4:57:57 阅读72 评论0 82015/03 Mar8

http://www.exploringbinary.com/converting-floating-point-numbers-to-binary-strings-in-c/

http://stackoverflow.com/questions/397692/how-do-i-display-the-binary-representation-of-a-float-or-double

http://stackoverflow.com/questions/21244252/convert-float-to-its-binary-representation-using-memorystream





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace d2b01
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Text = null;
            //richTextBox1.Text = null;
            string ls_decinput;
            double ld_temp;
            ls_decinput = textBox2.Text.Trim();
            ld_temp = double.Parse(ls_decinput);

            //// ref to https://msdn.microsoft.com/en-us/library/a5be4sc9(v=vs.110).aspx
            ////

            byte[] lba_array = BitConverter.GetBytes(ld_temp);

            ////StringBuilder sb0 = new StringBuilder(lba_array.Length * 2);
            ////foreach (byte lb_bit in lba_array)
            ////{
            ////    sb0.Append(lb_bit.ToString("x2"));
            ////}

            textBox1.Text = BitConverter.ToString(lba_array).Replace("-","");
            richTextBox1.Text += BitConverter.ToString(lba_array) + "\r\n";

        }
    }
}

作者  | 2015-3-8 4:57:57 | 阅读(72) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 

有道博客魔方

 
 
模块内容加载中...
 
 
 
 
 

有道博客搜索

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2015

下载LOFTER客户端

汇聚2000万达人的兴趣社区
下载即送20张免费照片冲印

创建博客 登录  
 加关注