主页
Top.Mail.Ru Yandeks.Metrika
论坛:“主要”;
当前存档:2002.04.01;
下载:[xml.tar.bz2];

向下

分配给的值 找到类似的分支


Gluka   (2002-03-14 02:18) [0]

这到底是什么,以及如何处理!



Lego   (2002-03-14 02:26) [1]

你在某处吗 VAR 宣布了这个A,它只是没有被使用...或者,如果不是正在使用它,那不是您的Delphi期望的那样



~Sergius   (2002-03-14 02:57) [2]

对于问题的第二部分(“如何处理”)-显示警告的选项已关闭



Suntechnic   (2002-03-14 03:20) [3]

>〜Sergius(14.03.02 02:57)
>关闭选项以显示警告

通常,通过删除“多余的”变量可以消除这种情况,但是当然,当然是谁...



~Sergius   (2002-03-14 04:06) [4]

2 Suntechnic©
再一次,开个玩笑后不笑的习惯使我失望



Suntechnic   (2002-03-14 04:14) [5]

>〜Sergius(14.03.02 04:06)
:)



Gluka   (2002-03-14 04:21) [6]

程序g1;

使用??;

VAR
a:整数;
开始
a:= 0;
...
...
从未使用分配给“ A”的值
为什么!?!!?!?



Suntechnic   (2002-03-14 04:32) [7]

> Gluka©(14.03.02 04:21)
告诉我你有变数的地方 a 被使用? 如果没有,那么您希望编译器提供什么?



Lego   (2002-03-14 06:41) [8]

你有一个变量
1。 宣布。
2。 等同于0。
3。 但不使用:)



stub   (2002-03-14 07:39) [9]

将焦点放在消息窗口(编译器将在其中收集消息)上,然后在选定的错误上按F1。 您将从borland帮助中获得有关错误的描述。
享受。



Song   (2002-03-14 08:32) [10]

顺便说一下,编译器有时会在这种消息上出错。

首先,我想举一个这样的错误的例子,但是我认为它(在某种意义上是一个例子)在30上的行,我认为以不同的方式来考虑它不会很有趣。 编译器很容易混淆。




drpass   (2002-03-14 10:19) [11]

>格鲁卡
还有什么困扰你? 这不是错误,而是警告。 编译器看到一个完全没用的分配(因为您实际上没有使用分配的值),并认为警告您是他的职责-突然您忘记添加一些命令。 如果您不喜欢此类警告,则可以在“项目选项”->“编译器”选项卡上将其关闭



Anatoly Podgoretsky   (2002-03-14 22:53) [12]

最好听编译器并使用它,否则为什么需要它?

歌曲©(14.03.02 08:32)
来吧,来吧,突然编译器是对的。



Malder   (2002-03-14 23:12) [13]

Anatoly Podgoretsky,编译器确实是错误的。 确实很难举一个例子。 我有某种组件。 他总是写不使用的S1。 尽管仍在使用S1 ...



Anatoly Podgoretsky   (2002-03-14 23:25) [14]

并非逐字逐句,通常编译器的动作中存在逻辑,或者您将其弄混了:-)



Shirson   (2002-03-15 07:54) [15]

编译器是正确的。
a:= 0; 这没有使用变量。 使用变量是c:= b + a; 或为:= 0到100做...
尝试将该变量的声明从过程中删除,从主体中删除a:= 0并运行程序。 有事吗? :)



Внук   (2002-03-15 09:27) [16]

我还想看一个示例代码。 有时,编译器确实会生成“额外”警告,但不是这种类型的警告(它发生在未初始化的变量中)。 关于使用变量的警告很容易检查-编译器只是在寻找对该部分内存的读取访问-是否存在。 至少在我(和我的同事)的实践中,并没有错误地得出此警告的结论的情况。



Sergey13   (2002-03-15 09:52) [17]

这件事也发生在我身上。 在不使用的情况下宣誓就职,并明确使用该变量。 但是在某种意义上是流行的(也就是说,不是每天),并通过反复编译进行了“处理”。 很简单 一次编译-收到,第二次编译-丢失。 也许这是我第一次不了解8-),但断开警告并不值得-有时会这样说。



Shirson   (2002-03-15 10:10) [18]

>孙子©(15.03.02 09:27)
我也想看看一个代码示例。 有时,编译器确实会生成“额外”警告,但不是这种类型的警告(它发生在未初始化的变量中)。
---

有一个。 这是当您声明变量并使用其值而无需初始化时。 后果自负,风险自负-编译器对后果不承担任何责任;)



MAxiMum   (2002-03-15 10:16) [19]

麻烦的是,编译器还会抛出带有未使用变量的代码行(请看编辑器的左侧带点)。
代码! 代码! 代码! 代码! 代码! 代码! 代码! 代码! 代码! 代码! 代码!



Sergey13   (2002-03-15 10:52) [20]

再次爬到德尔福,结果

程序TForm12.FormShow(发件人:TObject);
var i,k,ls, VCH,vcho:整数;
....
等等等等
....
vch:= 1;
vcho:= 1;
对于我:= 1到ls
开始
c:=复制(s,i,1);
如果pos(c,“ 0123456789。,”)> 0,则st:= st + c
其他
开始
如果c =“(”,则vch:= 1否则
如果c =“ *”,则vch:= 2 else
如果c =“ /”,则vch:= 3否则vch:= 0;
if vch = 1 然后k:= k + 1;
.....
等等等等
.....
已发布-从未使用分配给“ vch”的值
重新编译后,它消失了。



Внук   (2002-03-15 10:53) [21]

>> Shirson©
我想到的是一点点不同,那就是真正的“额外”警告。 例如,根据程序的逻辑,条件语句仅在一个分支中初始化变量,而在另一个分支中无法执行(到目前为止尚未完成)。 像这样:

...
var i:byte;
...

程序
开始
i:= 1;
...
结束;

程序二;
var AAA:整数;
开始
如果我= 1那么
开始
AAA:= 1;
...
结束
其他
开始
...
结束;
ShowMessage(IntToStr(AAA));
结束;

代码是在这里输入的,但我认为含义很清楚



Внук   (2002-03-15 11:00) [22]

>> Sergey13©
没错 分配vch:= 1; 从一开始它就没有意义,因为在任何情况下都将重新分配此变量。
“重新编译消失了。” :))如果您选择“全部构建”,它将再次出现。




Внук   (2002-03-15 11:09) [23]

是的,您需要在消息孙子©(15.03.02 10:53)中添加代码,例如
过程Form1.OnCreate ...
开始
首先;
第二
结束;



Sergey13   (2002-03-15 11:17) [24]

>孙子©(15.03.02 11:00)
是的,您说得对,谢谢。 我破坏了这笔生意,并在Delfu上投入了很多钱。 我pent悔。



Anatoly Podgoretsky   (2002-03-15 21:47) [25]

Sergey13©(15.03.02 10:52)
他们说听编译器说,第一个值从不使用

孙子©(15.03.02 10:53)
好吧,有两个问题。
1。 编译器是一次性的,它不知道该变量可以在另一个过程中使用,或者例如由于异常而不能使用。

2。 AAA变量可以未初始化。

也就是说,两个示例都不令人满意。



Song   (2002-03-16 11:09) [26]

2Anatoly Podgoretsky©(14.03.02 22:53)
抱歉,我无法到达。
请报告从未使用过Flag变量:

标志:= False; 用strg做 用TreeView.Items做 对于t:= 1到RowCount-1 开始 节点:= TreeView.Items [0]; 重覆 试一试 IF Pos(单元格[IndexNo,t],Node.Text)> 0然后 IF Pos(“刺痛”,S)> 0,然后 开始 ..... 标志:= True; 结束别的 开始 ...... 标志:= True; 结束; IF Node.Text =“其他文档”,然后NodeSafe:=节点; 节点:= Node.GetNextSibling; 除了 如果不标记,则 开始 ..... 标志:= True; 结束; 休息时间 结束 直到错误; 结束;



Внук   (2002-03-18 17:20) [27]

>>歌曲©
你认为那是用过的吗? 如果代码确实与此处相同,则可以放心地抛出此Flag变量。 只能通过Exception(其中Flag始终为true)退出循环。 在循环的主体中,不使用Flag的值。 还是我不明白?



Внук   (2002-03-18 17:55) [28]

>>歌曲©
我刹车,但是。 抛出Flag是不可能的,异常处理取决于它。 只要相信,信不信由你,但是此代码(Delphi5)没有对Flag变量发出任何警告。 也许事实是它代替了...?



Song   (2002-03-19 08:59) [29]

2孙子©(18.03.02 17:55)
它从我推断出:((我说编译器很困惑...
不,不是……不是那样的。
顺便说一下,该程序的摘录位不正确。
标志:=假; 面对重复,即:
.....
对于t:= 1到RowCount-1 开始 节点:= TreeView.Items [0]; 标志:= False; 重覆 试一试 IF Pos(单元格[Ind
...

但这并没有任何改变。 警告仍然不应该发出。



ao1973   (2002-03-19 09:49) [30]

由主持人删除



Song   (2002-03-19 09:55) [31]

2ao1973 (19.03.02 09:49)
你有什么问题 为什么立刻得罪了?



keg   (2002-03-19 10:16) [32]

在显示的示例中,编译器正确警告。 在第一行中,您将其赋值为False然后(在缺失的行中)再次进行赋值,并且在它们之间不使用Flag,因此第一次赋值不是必需的 - 您可以将其剪切掉。 好吧,在最后,你在Exception中再次进行赋值,并且在(直到程序结束)之后没有使用Flag,那么它有什么区别,退出循环后Flag会有什么值?



Rooman   (2002-03-19 10:36) [33]

所以,先生们,程序员们!
我将一劳永逸地解决您的问题!

1。如果启用了OPTIMIZATION code选项,则编译器将使用代码的OPTIMIZATION编译项目(即,它将以最佳方式转换代码-请参见代码的DISASSEMBLER)。
这是什么意思? 这意味着在某些LOCAL变量下,MEMORY中的位置未被保留,即 代码经过优化,以使对此变量的所有操作都在处理器寄存器内部进行。 一个例子:

var a,b:整数;
...
a:= 1;
b:= a;
...

像这样编译:

mov eax,1; eax-处理器寄存器
mov b,eax
...

然后编译器发出警告“变量a永不使用”。

总的来说-这甚至很好,因为 尽可能快地工作(不访问内存)。

2。 启用优化后,编译器会自动记录一个简单的赋值,而无需随后使用变量(请参见项目s-va)。






Ray   (2002-03-19 10:46) [34]

2 Rooman。 好吧 以上所有代码都遭受相同的错误,或更确切地说,不是错误,而是误解或不专心。 第一次给变量赋值,然后,如果从变量中什么也没读出而只赋值,那么无论发生了多少代码,都完全不需要第一次赋值。 这是编译器并发出警告。 这是最容易理解的。 拿代码。 我们删除该变量不存在的行,然后看还剩下什么?

标志:= False; 标志:= True;



RedWood   (2002-03-19 10:54) [35]

您好!

>顺便说一下,程序的摘录位不正确。

>字符串标志:= False; 面对重复,即:
.....
标志:=假;
用strg做
用TreeView.Items做
对于t:= 1到RowCount-1 Do
开始
节点:= TreeView.Items [0];
标志:=假;
重复新密码

事实证明,警告给出了第一个分配标志:= False; 因为 无论如何,在FOR循环中,将重新定义变量。 自然,如果在过程中不再使用该变量,则为true。
顺便说一句,在哪行发出警告?



keg   (2002-03-19 11:17) [36]

2 RedWood。 双击警告,将显示所需的行。



Song   (2002-03-19 11:32) [37]

2RedWood:
在这里发布时我犯了一个错误。 Flag变量位于重复之前,而不是之前。

我理解以下消息:“变量已声明,但未使用。” 请告诉我这段文字的任何路径,即使有例外,无论与Flag一起使用的行发生在哪里。



Drex   (2002-03-19 12:35) [38]

你觉得这件作品怎么样? 这里也不使用
i:= 0;
CardByte:= 0;
重复新密码
Byte10:= 0;
位:= 0;
重复新密码
i:= CardByte * 8 +位;
{二进制到十进制}的大小写位
0:Byte10:= Byte10 +当前[i] * 128;
1:Byte10:= Byte10 +当前[i] * 64;
2:Byte10:= Byte10 +当前[i] * 32;
3:Byte10:= Byte10 +当前[i] * 16;
4:Byte10:= Byte10 +当前[i] * 8;
5:Byte10:= Byte10 +当前[i] * 4;
6:Byte10:= Byte10 +当前[i] * 2;
7:Byte10:= Byte10 +当前[i] * 1;
结束;
位:=位+ 1;
i:= i + 1;
直到Bit = 8;



Внук   (2002-03-19 13:35) [39]

>>歌曲c(19.03.02 09:55)“但是那什么都不会改变。仍然不应该发出警告。”
它甚至发生了变化:)现在,我在以下片段中收到有关Flag:= True的警告:
...

如果不标记,则
开始
标志:= True;
...
结束;
打破;
结束;
...
好吧,对了,只有在执行Flag:= True的情况下,才可以通过Exception退出循环,并在外部循环的下一次迭代中立即执行Flag:= False。
实际上,这是一个警告。 标志分配应从异常处理程序中删除。 编译器是正确的。
我重复一遍-如果两次访问变量之间没有写访问,就会发出此警告。
“我以这种方式理解消息:“声明了变量,但未使用。”-应该以这种方式(从字面上)理解消息:为变量分配了将来不使用的值,即可以不分配它。
>>桶(19.03.02 10:16)请参阅孙子c(18.03.02 17:55)“您不能抛出Flag,异常处理取决于它” –对于旧的代码片段,情况就是这样。
>> Ray c(19.03.02 10:46)我敢注意到,并非一切都那么简单。 尽管Rooman当然是正确的。
>>全部
我在这里要证明的是,永远不会白白显示这种特定类型的警告。 但通常可以忽略不计:)))



Внук   (2002-03-19 13:55) [40]

>> Drex(19.03.02 12:35)
一样 如果您可以向编译器解释为什么需要第一行i:= 0(我无法证明这一点),那么他将永远不会再给您警告:)



Анонимщик   (2002-03-19 15:44) [41]

你在做什么 编译器进行编译和优化。 他写道,他在最终代码中没有您的变量。 好吗



Внук   (2002-03-19 16:14) [42]

>>匿名©(19.03.02 15:44)
他为什么写这个? 对于他自己,还是想聊天? 问题是这些消息何时出现,以及如何避免它们。 此外,在上述所有示例中,发出警告的变量在WELL代码中完全增长。 但是事实是,大多数“很棒的程序员”(我不是说线程的任何成员,也不想冒犯)都不会读这些消息或不理解其含义-这是事实。



deleon   (2002-03-19 16:29) [43]

有一个编译器在一个绝对正确的对象函数中写道:“内部错误xxxx”没有帮助重启IDE或铁。 一般情况下,我将此函数与下一个函数交换,并立即喜欢编译器! 但它只有一次! 有多少次我已经在Delphi上发誓,但总是把它拿起来,结果发现这些是我的错误,所以我们可以说编译器在99,8%中是正确的:)



Donal_Graeme   (2002-03-19 16:38) [44]

这里是关于内部错误的,这是另一个故事:-))帮助说永远不要出现这种错误。 尽管如此,它们还是会出现:-)在某些情况下,有可能了解编译器不喜欢的内容(我成功了一次,但我不记得错误代码或原因了)。



Анонимщик   (2002-03-19 18:28) [45]

孙子
它们可能存在于代码中,但是编译器看不到使用它们的意义,因为它们不需要任何东西。 该编译器如何精确地确定该特定变量是否多余,您不必担心,我不会判断,为此您需要从内部了解它。 但是,当然可以提出一些建议。 这些变量是否存在于编译器将转换您的pascal代码(当然,这是可执行代码)的内容中,对于理解此类警告的出处,这正是最重要的事情。 在调试器中查找编译器认为不利的变量的值,这将变得更加清楚。



Anatoly Podgoretsky   (2002-03-19 20:46) [46]

特别地,有必要通过简单地将呈现的代码复制到编辑器中来重复该代码,而且撕下的代码在复制过程中会出错,不会提供太多,直到没有给出可以复制的示例为止。 这表明如果计算机错误,则极为罕见。 但是,即使他弄错了,也要考虑一下为什么会产生不成功的构造,因为构造太复杂,编译器无法理解。



Drex   (2002-03-20 05:46) [47]

>>孙子
确实,我试图团结一致,但那根本没用,;-)有时你会写这样的废话,对自己来说很有趣。 当该程序正在调试一些以前需要的东西时,就可以看出这一点……谢谢



vl_chel   (2002-03-20 08:13) [48]

在我看来,所有这些讨论都是那些对编程和程序工作知之甚少或不了解的人都对编译器的缺陷感到愤怒。 该变量未使用-表示代码不正确,需要改进



vl_chel   (2002-03-20 08:24) [49]

>> Drex在您编写的代码中,变量CardByte和i不是男性
i:= 0; <<感??
CardByte:= 0;
重复<<这是什么意思?
Byte10:= 0;
位:= 0;
重复新密码
i:= CardByte * 8 +位; << CardByte = 0 Sense ??


{二进制到十进制}的大小写位
0:Byte10:= Byte10 +当前[i] * 128; <<将所有I行更改为Bit
1:Byte10:= Byte10 +当前[i] * 64;
2:Byte10:= Byte10 +当前[i] * 32;
3:Byte10:= Byte10 +当前[i] * 16;
4:Byte10:= Byte10 +当前[i] * 8;
5:Byte10:= Byte10 +当前[i] * 4;
6:Byte10:= Byte10 +当前[i] * 2;
7:Byte10:= Byte10 +当前[i] * 1;
结束;
位:=位+ 1;
i:= i + 1; <<为什么增加I(更胜任 公司(I))
直到Bit = 8;




Внук   (2002-03-20 10:00) [50]

>>匿名©(19.03.02 18:28)
我用大写字母重复:警告并不表示未使用VARIABLE,而是未使用VARIABLE的当前值。 感受差异并按原样阅读消息。 错误的翻译会导致错误的解释。 编译器不会确定该变量是否是多余的,它仅报告立即(不使用该值)分配给该变量的值被另一个值覆盖。



Rooman   (2002-03-20 11:19) [51]

再次强调一下:仅当未在RAM中分配内存时,才使用变量。 即 其含义 至少 进入寄存器。 通常,这总是好的!



Rooman   (2002-03-20 11:29) [52]

如果您至少阅读了海豚的基本帮助,则警告不是错误。 如果这是一个错误-地狱将编译您,而不是程序! 在这种情况下,编译器说在编译期间没有为变量分配内存,即 例如,不可能在其值上设置断点,或者无法在运行时由调试器查看其值。 仅此而已! 那有什么问题呢?



Внук   (2002-03-20 11:38) [53]

>> Rooman(20.03.02 11:19)
我同意 但这并不与我之前所说的一切相矛盾。 我确认,即使在最终程序代码中为变量分配了虚拟RAM中的内存的情况下,此处讨论的警告也会合理地出现。 一个不会干扰另一个。 并且此消息的外观始终指示代码的曲率,这不好(尽管不可怕,否则将是错误)。



Alx2   (2002-03-20 11:38) [54]

>在编译期间未分配变量的内存
而是,没有生成可执行代码。



Внук   (2002-03-20 11:55) [55]

“在这种情况下,编译器说在编译期间没有为变量分配内存”
人,你是认真写这篇文章吗? 没什么。 内存的分配或不分配仅与此间接相关(作为特殊情况)。 是的,如果不可能在带有某些变量的行上放置断点,可能是没有为其分配内存吗? 由于优化,这一行是不可能的,可能另一行具有相同的变量,因此-内存分配给静态变量,然后被没收,还是什么? 我厌倦了解释。 不久,“ Fuck”中的该线程将带有:((



Rooman   (2002-03-20 12:03) [56]

我再次确认-完全是 没有脱颖而出! 不相信我-请参阅代码反汇编程序(我希望无需解释如何执行此操作:)



Внук   (2002-03-20 12:13) [57]

>> Rooman(20.03.02 12:03)
一切,我要去修道院了。 写代码
var i:整数;
i:= 0;
i:= 1;
这之后是一个极其复杂的代码,其中变量i发挥了最大的作用(20000行具有可怕的逻辑,不允许将该变量放入寄存器中)-自行决定。

在第i行:= 0; 您一定会收到臭名昭著的警告。 还有其他问题吗?



Rooman   (2002-03-20 12:18) [58]

变量有时直接存储在处理器寄存器中。 请参阅使用Delphi:

$ O指令控制代码优化。 在{$ O +}状态下,编译器执行许多代码优化,例如将变量放入CPU寄存器( 变量在处理器寄存器中的位置-即 不在RAM中),消除常见的子表达式( 将复杂的数学表达式重组为简单的表达式),并生成归纳变量( 创建归纳变量) 在{$ O-}状态下,所有此类优化均被禁用。
除了在某些调试情况下,您永远不需要关闭优化。 保证由Delphi的Object Pascal编译器执行的所有优化都不会改变程序的含义( 不保证您的代码和优化的代码等效) 换句话说,Delphi不会执行需要程序员特别注意的“不安全”优化( 换句话说,优化会导致原始算法的逻辑发生变化,但不会导致其结果发生变化).



Rooman   (2002-03-20 12:24) [59]

孙子,在这种情况下,编译器就如您所愿。 这也并不可怕,就像在寄存器内部使用变量的情况一样。 好吧,该死,先分配一个,然后再分配另一个-这效率低下,编译器说。



Rooman   (2002-03-20 12:34) [60]

孙子:您的示例中的编译器使用以下语句:

分配给“ i”的值从未使用过(从未使用过-在编译代码中)。

什么不清楚?



Rooman   (2002-03-20 12:38) [61]

有时会出现相同的消息( 并不总是 自然地)会在编译器重新编码时显示,从而根本不需要您的变量! 关于 我谈到以上情况,是因为我经常遇到它。



Rooman   (2002-03-20 13:16) [62]

关于归纳变量:

var i:整数;
过程doany(var n:整数); stdcall;

i:= 1;
做(i);
i:= 2;
做(i);
i:= 3;
做(i);

在此,在变量i下明确分配了内存。
因此,在这里,我是-对于您来说,这是一个变量,对于编译器,是三个不同的变量(请参阅反汇编程序):

mov [esp],1;第一个归纳变量(假定为“ i”)
推esp
给多安打电话

mov [esp],2;第二个归纳变量(假定为“ i”)
推esp
给多安打电话

mov [esp],3;第三个归纳变量(假定为“ i”)
推esp
给多安打电话

这是变量归纳的现象。

此示例很简单-算法在编译过程中不会重组,因此不会出现警告。

但是在周期中,我经常在优化过程中遇到编译器简单地抛出一个变量的情况(由于归纳,即通常在处理器寄存器中创建一个单独的变量-如上所示)。
在这种情况下:

i:= 0;
重复
...
我们使用变量i
...
直到......

编译器说永远不会发生零赋值,因为它不会被进一步使用,因为循环内的变量i与循环之前(并将在循环之后)的变量不同!

我建议您对此进行反思,因为这种情况很少见,因此很难立即树立榜样。



Rooman   (2002-03-20 13:26) [63]

简而言之,对提出问题的人的建议是关闭项目选项中的优化。 然后,所有内容完全按照您在代码中编写的方式进行编译。 但是最好不要这样做,并且通常要打分(请检查您的代码:))))



Rooman   (2002-03-20 13:34) [64]

孙子:对您而言,最后的和弦-您在说的只是我在说的结果。 因为 最常见的优化情况是归纳变量在处理器寄存器中的放置 导致编译器被迫抛出第一行代码:
i:= 0;
i:= 1;
因为在这行中创建归纳变量没有意义-不再使用。

仔细思考,您就会了解我。



Rooman   (2002-03-20 13:40) [65]

一般提示:将您自己的概念分开:Pascal代码和Assembler代码。 对于鼓式处理器,您可以设置一个变量或一个常量,处理器具有寄存器,该进程(虚拟机)中可用于其的存储器,具有不同的访问权限(黑白)和堆栈。 处理器操作的所有寄存器和所有数据为三种类型:QWORD,DWORD,WORD和BYTE。
仅此而已! 没什么



Внук   (2002-03-20 14:16) [66]

>> Rooman
我不需要解释:)即使在DOS是我们唯一的希望和支持的情况下,我也使用了C语言中的寄存器变量。 一个事实是,在Pascal中,程序文本中的同一变量在汇编代码中使用时可以不同地表示。 但是对于只看程序源代码的初学者(或不是初学者)来说,这是同一回事。 因此,我从高级语言的角度进行推理。 从副本来看(请参阅开头),很多人误解了根本不使用变量的消息的含义。 仅不使用该变量的中间值。 现在我们似乎已经开始谈论同一件事了:)
现在轮到我向提问者提供建议:不要关闭优化并且不要忽略警告,因为它们表明您的算法效率很低,甚至编译器也可以看到它,并且被用来为您进行粗鲁的纠正。 这已经是某种半成品了:)



Rooman   (2002-03-20 18:39) [67]

孙子 最后,我们彼此了解。 我不仅同意必须说一种高级语言这一事实​​。 在我看来,大多数程序员犯错误只是因为他们根本不知道最终将如何在最低级别执行错误。 我是为了增加程序员的知识。 在我看来,一般来说,编程不应该从高级语言学习,而应该从汇编程序学习,尤其是因为它更容易理解。



Rooman   (2002-03-20 18:54) [68]

并且该算法可以是有效的。 非常非常。 一个与另一个不相关:)



Drex   (2002-03-21 12:50) [69]

>> vl_chel

Drex在您编写的代码中,变量CardByte和i不是男性
i:= 0; <<感?? 在这里,我已经认识到我不能
CardByte:= 0;
重复<<这是什么意思? 另一个外部循环,其中增量为CardByte“,因此仍需要CardByte

Byte10:= 0;
位:= 0;
重复新密码
i:= CardByte * 8 +位; << CardByte = 0 Sense ??


{二进制到十进制}的大小写位
0:Byte10:= Byte10 +当前[i] * 128; <<将所有I行更改为Bit (在CardByte * 8 + Bit上)-因此有可能;-)
1:Byte10:= Byte10 +当前[i] * 64;
2:Byte10:= Byte10 +当前[i] * 32;
3:Byte10:= Byte10 +当前[i] * 16;
4:Byte10:= Byte10 +当前[i] * 8;
5:Byte10:= Byte10 +当前[i] * 4;
6:Byte10:= Byte10 +当前[i] * 2;
7:Byte10:= Byte10 +当前[i] * 1;
结束;
位:=位+ 1;
i:= i + 1; <<为什么增加I(更称职的公司(I)) 我会考虑的,谢谢,没有讽刺
直到Bit = 8;

这是外部循环的CardByte和直到的增量。





Stratos   (2002-03-21 14:16) [70]

谈到内部错误:
我在程序中写了一个周期后得到了这个 用于在它 的情况下,c 打破。 删除循环后(仍保留中断),出现错误。 从理论上讲,编译器应该以一种很好的方式诅咒。 也许他对大型项目感到困惑。

通常,唯一可靠的调试工具是萨满铃鼓 8)



fenics   (2002-03-21 18:42) [71]

可怜的古卡! 一打程序员能说到什么程度!
一周后,他的问题不记得了!



fenics   (2002-03-21 18:42) [72]

可怜的格鲁卡! 一打程序员能说到什么程度!
一周后,他的问题不记得了!



Страницы: 1 2 整个分支

论坛:“主要”;
当前存档:2002.04.01;
下载:[xml.tar.bz2];

楼上





内存:0.86 MB
时间:0.076 c
1-124年
初学者
2002-03-21 18:48
2002.04.01
从我的程序运行该应用程序。


3-12年
巴西莱
2002-02-27 20:30
2002.04.01
用于访问MSSQL Server的组件?


3-52年
urii
2002-03-07 19:09
2002.04.01
可移植性


1-166年
非线性光学
2002-03-19 10:18
2002.04.01
对象检查员


3-20年
SkyR
2002-03-06 07:38
2002.04.01
IB中的错误......





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法语
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 淡米尔文 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский