pascal高手进 关于assign用法的问题

pascal高手进 关于assign用法的问题,第1张

assign((文件类型,如input或output),(文件名及路径,如'c:\'));

如果是input要用reset(input)将输入文件变量初始化

如果是output要用rewrite(output)将输出文件清空并初始化

你的文件错误是没有输入文件路径,例如readmein和readmeout在文件夹abc1中

则应该是

Assign(input,':\abc1\readmein');Reset(input);

Assign(output,':\abc1\readmeout');Rewrite(output);

文件最后不要忘记

Close(input);Close(output);

否则可能造成文件损坏

使用PERFORM FORM1 IN PROGRAM ('ZMM001')等价于PERFORM FORM1(ZMM001)

使用FIELD-SYMBOLS使用其他程序的数据,

FIELD-SYMBOLS <F1> TYPE ANY

DATA XX(50)

XX = '(ZMM002)G_DATA' "程序ZMM001中G_DATA的数据

ASSIGN (XX) TO <F1>

<F1> = 'SDFAS' "这样就可以将主程序中ZMM001的变量G_DATA的值修改为SDFAS了。

我感觉吧,cout表示ina+inb+cin的最高那位,sum表示ina+inb+cin的低四位

assign的含义是定义,{cout,sum}这个的含义是将括号内的数按位并在一起,比如:{1001,1110}表示的是10011110

assign还有个相似的用法如:assign A = {a,b};

若a = 100101,b = 1010

那么A就被定义成了A = 1001011010;

整个语句:assign {cout,sum}=ina+inb+cin;

含义为将四位数ina,inb,cin相加,其值放入sum,进位放入cout。恩,这是一个带进位的加法模块。cin表示的是上一级加法给这一级的进位。

希望对你有所帮助。

要还是不懂可百度hi我

1、strong表示指向并拥有该对象。其修饰的对象引用计数会增加1。该对象只要引用计数不为0则不会被销毁。当然强行将其设为nil可以销毁它。

strong表示对一块内存强引用,当strong类型的指针指向一块内存,这块内存的引用计数就加1,相反则减1。当一块内存的引用计数为0时则销毁这块内存。

2、weak表示指向但不拥有该对象。其修饰的对象引用计数不会增加。无需手动设置,该对象会自行在内存中销毁。

weak表示一个指针对一块内存进行弱引用。弱引用就是不增加所指向内存的引用计数。

3、assign主要用于修饰基本数据类型,如NSInteger和CGFloat,这些数值主要存在于栈上。不涉及内存管理,内存计数不变化,如果修饰对象类型的话会出现野指针或者EXC_BAD_ACCESS错误。

4、weak 一般用来修饰对象,assign一般用来修饰基本数据类型。原因是assign修饰的对象被释放后,指针的地址依然存在,造成野指针,在堆上容易造成崩溃。而栈上的内存系统会自动处理,不会造成野指针。

5、copy与strong类似。不同之处是strong的复制是多个指针指向同一个地址,而copy的复制每次会在内存中拷贝一份对象,指针指向不同地址。copy一般用在修饰有可变对应类型的不可变对象上,如NSString, NSArray, NSDictionary。

6、@property 这个关键词的唯一作用就是声明getter、setter方法接口

7、@synthesize 实现setter、getter方法,找不到实例变量则主动创建一个

8、@dynamic 语义是用户要求自动生成setter getter方法,系统不会自动生成,所以此时调用setter或getter方法会crash,编译不报错(oc的动态绑定机制),而且调用对应的实例变量会报错

9、atomic 默认属性。当前进程进行到一半,其他线程来访问当前线程,可以保证先执行完毕当前线程。只是保证setter/getter完整,不是线程安全。atomic修饰的设值、取值方法使用了自旋锁,确保线程同步。虽然设值、取值方法是原子 *** 作,但不代表是线程安全。

10、nonatomic 非默认属性。两个线程同时访问同一个属性将会导致无法预计的结果。优点是程序运行速度快。

11、unsafe_unretained类型指针指向一块内存时,内存的引用计数也不会增加,这一点与weak一致。但是与weak类型不同的是,当其所指向的内存被销毁时,unsafe_unretained类型的指针并不会被赋值为nil,也就是变成了一个野指针。对野指针指向的内存进行读写,程序就会crash。

浅拷贝即指针拷贝,

深拷贝不但拷贝了对象的指针,还在系统中在分配了一块内存用来存放拷贝对象的内容

assign 只能给wire类型的变量赋值,而且它只能用来实现组合逻辑,它的赋值必须用=号。assign赋值语句不能放在alway里面。

对一个变量赋值,如果在always外面,只能用“assign wire_name = ……”或者parameter的格式。如果在always里面,有两种情况。

(1)如果多个变量被赋值的时候,是需要同时的,那么就用<=

(2) 如果多个变量被赋值的时候,需要有先后次序,那么就用=

通俗来讲,就像是3个人到ATM取钱的时候,(1)是有3台ATM,这三个人同时开始,同时取完;(2)是这3个人排队一个一个取。

但是对rtl仿真来讲,可以认为(1)和(2)的执行是“瞬间”完成的,即它们计算的时间为0

Assign是文本文件用的,文本文件又称为正文文件或行文文件,可以直接阅读,是人机通信的基本数据形式之一。文本文件的内容由ASCII字符集中的字符组成,因此文本文件也称ASCII码文件。文本文件具体是由一系列行组成,每一行可以包括0个或多个字符型成分,并以行结束符结尾。文本文件可用文字编辑程序(如Free Pascal的编辑窗口中或记事本中)直接建立、阅读和修改, 也可以由Pascal程序在运行过程中建立。 一、文本文件的定义

文本文件的类型为text,它是由ASCII字符组成的,是Pascal提供的标准文件之一。标准文件text已由Pascal说明如下:type text=file of char;因此,同标准类型integer、real等一样可以直接用于变量说明之中,无需再由用户说明。 例如:

  var f1,f2:text;

这里定义了两个文本文件变量f1和f2。二、文本文件的建立

文本文件的建立有两种方法:一是直接用Free Pascal的Edit建立原始数据文件;二是用程序的方式建立中间数据或结果数据文件。例如将下表中的数据存入名为Adat的文件中。

3 4

29 30 50 60

80 90 70 75

60 50 70 45

*** 作步骤:进入Free Pascal的编辑状态;输入数据;存盘,文件名取Adat。

此时,已将数据存入文本文件Adat中。文本文件也可用记事本等文本编辑器在windows下建立。

如果用程序的方式建立文件, *** 作步骤为:

1、定义文本文件变量;

2、把一外部文件名赋于文本文件变量,使该文本文件与相应外部文件相关联;

命令格式:assign(f,name)

f为定义的文本文件变量,name为实际文件文件名

如:assign(f1,'fileinin') {相对路径}

或:assign(f1,'d:\pas\fileoutout') {绝对路径}

这样在程序中对文本文件变量f1的 *** 作,也就是对外部实际文件'fileinin'或'fileoutout'的 *** 作。上例中文件'fileinin'是存贮在当前目录中,而文件'fileoutout'则是存贮在d:\pas\子目录中。

3、打开文本文件,写准备;

命令格式:rewrite(f)

功能:创建并打开新文件准备写,若已有同名文件则删除再创建。

4、对文件进行写 *** 作;

命令格式:write(f,<项目名>)或:writeln(f,<项目名>)

功能:将项目内容写入文件f中

5、文件 *** 作完毕后,关闭文件。

命令格式:close(f)例111 从键盘输入下列数据,然后用程序写入名为Bdat的文件中。3 4

29 30 50 60

80 90 70 75

60 50 70 45program exp11_1;

var i,j,n,m,x:integer;

f:text;

begin

write('n,m=');

readln(n,m);

assign(f,'bdat');

rewrite(f);

writeln(f,n,' ',m);

for i:=1 to n do

begin

for j:=1 to m do

begin

read(x);

write(f,x,' ');

end;

readln;writeln(f);

end;

close(f);

end

三、读取文本文件

文本文件内容读取 *** 作步骤:

1、定义文本文件变量;

2、用assign(f,name)命令,将内部文件f与实际文件name联系起来;

3、打开文本文件,读准备;

命令格式:reset(f)

功能:打开一个已经存在的磁盘文件,该文件只能读,指向文件元素的指针指向第一个元素。4、对文件进行读 *** 作;

命令格式:read(f,<变量名表>) 或readln(f,<变量名表>)

功能:读文件f中指针指向的数据于变量中。

5、文件 *** 作完毕,用close(f)命令关闭文件。

例112 读出例1生成的文本文件Bdat中的内容,并输出到屏幕。program exp11_2;var i,j,n,m,x:integer;f:text;beginassign(f,'bdat');reset(f);read(f,n,m);writeln(n,' ',m);for i:=1 to n dobeginfor j:=1 to m dobeginread(f,x);write(x,' ');end;writeln;end;close(f);readlnend由于文本文件是以ASCII码的方式存储,故查看文本文件的内容是极为方便,在windows状态可使用记事本等软件进行查看,在Free Pascal中可以象取程序一样取出文件进行查看。

以上就是关于pascal高手进 关于assign用法的问题全部的内容,包括:pascal高手进 关于assign用法的问题、ABAP 调用另一个程序的子程序、verilog中assign{ }是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/10080050.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存