我需要一个像powerbasic这样的小程序来编译在windows控制台上运行的基本应用程序(很小,所以不能选择微软快递版).你有什么建议我的?
我正在把我的Atari ST 520弄脏,并试图理解GFA基本的一些语义细节.该TYPE(ptr)函数以这种方式记录:
Run Code Online (Sandbox Code Playgroud)Determines the type of the variable at which a pointer is set.
'ptr' is an integer expression (usually *var).
TYPE(ptr) returns a code according to the type of
variable to which 'ptr' is pointing.
0=var
1=var$
2=var%
3=var!
4=var()
5=var$()
6=var%()
7=var!()
Run Code Online (Sandbox Code Playgroud)
相同的文档没有谈论这些后缀的含义.(一定很明显)
我好像记得那$是一个字符串/内存块,%一个整数,()一个相同的数组.什么都!没有?!似乎用于0/1变量.
我试图用Commodore BASIC中的"."填充A $(X,X).
这就是我到目前为止所拥有的......但我不确定如何处理ASCII值等等.任何评论?
INPUT A$
FOR I = 0 TO X = DIM A$(X,X)
A$(".",x)
Run Code Online (Sandbox Code Playgroud)
我仍然对PET BASIC的API感到非常困惑......任何建议都会非常感激.
我目前正在将一堆旧的GWBASIC代码重构为python,以便可以在较新的计算机上运行。它们都是古老的工程数学程序,这些数学运算量很大,并且在整个过程中都大量使用GOTO语句。
我只是想知道您如何重构该语句?您是否只是在全局范围内声明所有变量并编写将对其进行修改的函数,还是只需要重写程序逻辑以使传递值有意义,或者是否有更好的方法呢?
下面的代码片段:
25 INPUT "EXISTING FILE (Y/N)";EF$
30 IF EF$="Y" OR EF$="y" THEN 4000
40 LOCATE 4,1:PRINT USING "<######> NUMBER OF JOINTS";NON+1;:GOSUB 1400:IF D$="" THEN 50 ELSE NON=VAL (D$)-1
50 PRINT:PRINT USING "<######> NUMBER OF MEMBER GROUPS";MG+1;:GOSUB 1400:IF D$="" THEN 60 ELSE MG=VAL (D$)-1
60 PRINT:PRINT USING "<######> NUMBER OF MEMBERS";M+1;:GOSUB 1400:IF D$="" THEN 70 ELSE M=VAL (D$)-1
70 PRINT:PRINT USING "<######> NUMBER OF SUPPORTS";NS+1;:GOSUB 1400:IF D$="" THEN 75 ELSE NS=VAL (D$)-1
75 E=200000!:PRINT:PRINT USING "<#########> YOUNGS MODULUS (MPa)";E;:GOSUB …Run Code Online (Sandbox Code Playgroud) 因此,我正在尝试将一些非常古老且值得尊敬的工程分析QBasic 4.5代码移植到C.我试图准确地匹配结果,并且我发现我无法理解QB如何进行数学运算.
例如,这两行
DIM a AS SINGLE
DIM d2 AS SINGLE
DIM e2 AS SINGLE
a = 32.174
d2 = 1! / (2! * 32.174 * 144!)
e2 = 1! / (2! * a! * 144!)
Run Code Online (Sandbox Code Playgroud)
d2变为1.07920125E-4(浮点0x38e2532d)
e2变为1.0792013E-4(浮点0x38e2532e)
这有点不同.谁能帮我理解为什么?非常感谢.
我必须从旧版的Visual Basic软件中复制算法,而关于代码的一件事我不理解。
看来作者已经使用某种方式隐式地通过引用传递简单的数据类型,例如整数。我第一次认为这可能是原始软件中的错误,但第三次出现后,它似乎是故意的。
我无法运行和调试原始(VB6或更低版本)代码。并且在我尝试重现该行为(使用VB.NET)的每个简单代码示例中,除非明确使用ByRef,否则它始终按值传递。
我举了一个例子:
Option Explicit
Module VBModule
Public Sub Calculate(value)
value = value + 1
End Sub
Function Starter()
Dim value%
Call Calculate(value)
If value > 0 Then
Console.WriteLine("Success")
End If
Console.WriteLine(value)
End Function
Sub Main()
Call Starter()
End Sub
End Module
Run Code Online (Sandbox Code Playgroud)
该代码取决于Sub value更改Calculate以达到“成功”。在原始项目中,如果不起作用,则有数百行代码将无法访问。
所以问题是,有没有办法value在仍然使用整数类型的情况下通过引用传递而不使用ByRef?还是我要完全理解的错误代码?
作者在代码库中的任何地方都没有使用显式的ByRef或ByVal语句。变量使用类型字符声明,但是子例程参数缺少类型声明。我不确定所使用的Visual Basic版本。在主文件中,第一个语句为VERSION 5.00。
当我在Visual Studio中打开代码时,参数的类型显示为Object。因此,Visual Studio知道我不知道的东西,或者仅仅是因为参数缺少类型声明。
我还拥有该软件的编译版本,其产生的结果看起来不错。因此,当我完成代码转录后,我至少可以对照原始结果进行检查。
我想知道如何进入 Commodore 64 上的程序集编辑器。您输入命令吗?
我在 YouTube 上看到过这种情况,但发生得太快了,我跟不上!
2 Print "What is your name"
input nameperson$
Print "What is your Dad's name"
input ageperson$
Print "Your Name is ";nameperson$;" ";ageperson$
GOTO 2
Run Code Online (Sandbox Code Playgroud)
为什么这段代码在 BASIC 256 中不起作用?我已经在QB64中尝试过并且有效。
我知道如何在 LO (7.2.4.1) Calc BASIC 中“选择”一个范围....
ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("D1:H6")
Run Code Online (Sandbox Code Playgroud)
但是如何使用 BASIC 将一个值(例如“1”)写入该范围?
myRange = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("D1:H6")
myRange.Value = 1
Run Code Online (Sandbox Code Playgroud)
给出“未找到属性或方法”错误。但我找不到任何属性或值可以让我做我想做的事情。四处奔波并尝试
myRange.setValue = 1
myRange.writeValue = 1
myRange.setString = "1"
Run Code Online (Sandbox Code Playgroud)
许多其他变体也不起作用。
真的很感激这个解决方案。谢谢。
我想在commodore 64中编写一个非常简单的基本程序,输入其他基本命令。
这是一个例子:
10 print"list"+chr$(13)
这会打印列表但不会按 Enter 键。
我的期望是得到 list 命令的结果。
我怎样才能实现这个目标?