奇怪的德尔福代码

时间:2016-12-20 21:27:50

标签: java delphi

我目前正在将Delphi代码转换为Java代码,我需要一些帮助来理解某行代码的作用。我在网上浏览过,无法找到代码的这一特定部分。

我理解来自下面的Writeln(...)。 我也理解'f'是来自下面代码的writeln(...)的目的地。 我也理解FloatToStrF(...)函数及其参数是什么,但我对附加到FloatToStrF(...)末尾的小块感到困惑:12如下所示。

Writeln (f,FloattoStrF (llat,ffFixed,8,2):12,FloatToStrF(llon,ffFixed,8,2):12,InttoStr(elev):12,' ',zz);

当附加到FloatToStrF(...)或InttoStr(...)的末尾时,':12'是什么意思?这意味着它是什么类型的? 它的类型是否改为'12'? 我知道':'用于在delphi中指定变量类型,但它在FloatToStr(...)后面的实例中做了什么?

如果需要更多的上下文,那么这里有更多的代码:

AssignFile(F, AppPath+'\Markov98.ctl');
Rewrite(F);
Writeln (f,FloattoStrF (llat,ffFixed,8,2):12,FloatToStrF(llon,ffFixed,8,2):12,InttoStr(elev):12,'    ',zz);
CloseFile(F);

2 个答案:

答案 0 :(得分:8)

这是宽度说明符。它是标准的帕斯卡,适用于所有帕斯卡方言。

对于要写出的每个值,您可以指定宽度和(对于浮点值)精度:

writeln(f, 'Hi':5, 3.14159:7:2);

请参阅Delphi文档:http://docwiki.embarcadero.com/Libraries/en/System.Write(或FreePascal文档http://wiki.lazarus.freepascal.org/Formatting_output

答案 1 :(得分:5)

Writeln过程是一个编译器 magic 函数,它只是Write过程的扩展,在执行 Write 之后, Writeln 写了一个结束行标记。

现在您在documentation of the System.Write procedure

中解释了您所寻找的内容
  

Write(Ln)参数的格式为:

     
    

OutExpr [:MinWidth [:DecPlaces]]

  
     

MinWidth指定最小字段宽度,必须大于   0.写入精确的MinWidth字符(必要时使用前导空格),除非OutExpr具有必须表示的值   超过MinWidth字符。在这种情况下,足够的人物   用来代表OutExpr的价值。同样,如果MinWidth是   省略,然后写入必要的字符数   表示OutExpr的值。

     

DecPlaces指定定点中的小数位数   表示其中一种真实类型。它只能在指定的情况下指定   OutExpr是Real类型之一,如果还指定了MinWidth。   指定MinWidth时,它必须大于或等于0.