问题标签 [visualworks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
504 浏览

smalltalk - 如何在 OpenBSD 下运行 VisualWorks?

有没有人让 VisualWorks 在 OpenBSD 下运行?它不是官方支持的平台,但 Cincom 的一个人告诉我,它应该能够在 linux 兼容模式下运行。你是怎么设置的?

我已经让 Squeak 运行没有问题,所以我不是在寻找替代方案。我特别需要为一个项目运行 VisualWorks 的 Web Velocity。

谢谢,

0 投票
5 回答
3517 浏览

model-view-controller - 用吱吱声写一个 GUI

如何在 Squeak 中编写 GIU?我是 Smalltalk 新手,目前正在使用 Cincom 的 VisualWorks,但我想试试 Squeak。我看到 Squeak 具有用于图形的 Morphic,但对于我的生活,我似乎无法找到一个包来编写基于 MVC 的 GUI。

0 投票
1 回答
80 浏览

smalltalk - 如何摆脱 VW 3.1d 和 ENVY 中的非托管代码

我有一个旧的 VW3/ENVY 图像,其中一个包裹作为非托管代码加载(正是Mastering ENVY/DEVELOPER警告的情况)。不幸的是,这个问题发生在很久以前,在没有加载包裹的情况下“返回”到图像已经太晚了。

显然,有一种方法可以解决这个问题(我们有一个开发映像已经解决了这个问题,并且有正常的配置映射包含与非托管包裹完全相同的代码,但它们无法加载),但确切的方式早已被遗忘(并且将特定的开发映像作为新运行时映像的基础存在一些问题,因此我需要找出如何再次执行此操作)。

理论上,应该可以从配置图中移除包裹并重新加载代码。在实践中,所有正常方式(使用 ParcelBrowser 或直接调用 UnmanagedCode>>remove)都会失败。我什至尝试从方法字典中手动删除有问题的选择器,但过了某个点(涉及调用#primBecome:)整个图像完全挂起(我什至无法进入调试器)。我开始破解类和方法的实例,希望我能欺骗 ENVY,让他们认为这些特定的方法是正常的版本化代码,但还没有成功。

周围是否有任何 smalltalk/envy 大师仍然记得足够多的 VW 3 来为我提供任何指示?

状态更新 经过一周的尝试解决问题后,我终于做到了,至少部分做到了,所以以防万一有人感兴趣......

首先,我必须修复未管理代码的文件指针(否则,所有试图触及方法的所有内容都会引发异常)。看起来 ENVY 扩展了 Parcel,因此理论上,所有整数文件指针void在加载时都会更改为 ENVY 的文件指针,但在我的情况下,我必须手动完成(Parcel 为其定义的所有选择器提供枚举)。另一种方法是调整filePointer代码,但这不容易在需要的每个图像上自动完成。

然后,可以丢弃包裹,丢弃包裹信息,但保留代码。官方的“丢弃”机制需要有一个有效的更改文件(envy 不使用它,因此必须手动设置,然后重新设置)和包源(幸运的是我们有)。

为了能够对方法进行任何更改(手动或通过从 ENVY 加载应用程序或类),他们需要摆脱其非托管状态。这可以通过手动调整来完成TheClass>>applicationAssocs(我还删除了对 UnmanagedCode sich 中类的所有引用作为时间戳,并删除了对丢弃包裹的引用)。我实际上从我的老板那里得到了一些关于如何达到这一点的信息,但是直到我自己几乎想通了,我才能够理解这些指示。

这最终允许我加载和重新加载所有包含这些类的应用程序。理论上。实际上,每当我尝试加载较新版本的应用程序(包含以前在包中的代码)时,图像仍然完全挂起。

事实证明,崩溃与不受管理的代码完全无关,而是与相关包裹已修改的事实有关,由于缺少和/或未初始化的类变量(该方法未调用)InputState>>process:而导致异常InputState>>initialize直到新process:方法到位之后)。我不得不修改Notifier类以将所有异常转储到文件中以找出发生了什么。将类变量添加到类的源(而不是通过反射添加),通过挂起输入处理线程toBeLoadedCode并在loaded方法中重新启动它并创建新版本的应用程序甚至解决了这个问题。

现在一切正常,理论上。实际上它仍然无法使用,因为重新加载 WindowSystem 或 VisualworksBase 应用程序会导致它们的初始化块运行,并且很多设置都被重置为默认值 - 字体和字体大小、窗口颜色、UI 设置......而且没有似乎可以将设置保存到文件并稍后加载它们,或者只是查看所有设置是什么(官方设置菜单没有显示所有内容,或者我们有一个经过大量调整的图像......这么多从头开始重建它)。但这是一个完全不同的问题。

0 投票
2 回答
960 浏览

string - Smalltalk - 将文本对象转换为字符串

嗨,我在 smalltalk(视觉作品)中有一个文本编辑器小部件,它返回一个文本对象,但是我希望返回的文本作为字符串对象处理。

如何将文本对象解析为字符串?

0 投票
2 回答
981 浏览

smalltalk - Smalltalk,显示 OrderedCollection 到列表小部件

嗨,我有一个有序的字符串集合,我试图在列表小部件上显示。我执行以下操作:

其中 displayWidget 是 List Widget, coll 是包含字符串的 OrderedCollection。它会显示它,但它会显示在一行中。

而不是得到

我得到:

我正在使用视觉作品。*

0 投票
6 回答
9059 浏览

string - Smalltalk - 比较两个字符串是否相等

我正在尝试比较 Smalltalk 中的两个字符串,但我似乎做错了什么。

我不断收到此错误:

未处理的异常:非布尔接收器。为真理而行。

知道我做错了什么吗?

0 投票
1 回答
303 浏览

dvcs - VisualWorks Smalltalk 的分布式源代码控制

Smalltalk 令人讨厌的事情之一是它(通常)需要自己的 VCS,因为它管理其源代码的方式。Squeak and Gemstone(至少在它的 GLASS 版本中)有一个名为 Monticello 的 DVCS,它运行良好。据我所知,VisualWorks 的主要 VCS,StORE,只能在老式的集中模式下工作。VisualWorks 是否有类似于 Monticello 的系统?或者,我是否误解了使用商店的正确方法?

0 投票
1 回答
408 浏览

smalltalk - 在 Smalltalk 中使用 Symbol 的“最佳实践”便携方式是什么?

在 Smalltalk 中以可移植方式使用符号的“最佳实践”规则是什么?我主要使用 squeak 和 pharo,我知道它们都允许 'foo' = #foo 和 #foo = 'foo' 为真,而其他 Smalltalks 则不允许。我了解符号用于识别,不应用于代替字符串。但是至少可以安全地假设一个符号对象是一个可以像 copyWith: 或 do: 这样发送消息的集合,还是必须先将它转换为某种集合?

任何意见,将不胜感激。

0 投票
5 回答
4378 浏览

smalltalk - 如何在 Smalltalk 中管理二维数组?

我有一个点列表,必须进行侵蚀/膨胀操作。我需要一种二维数组,但在 VisualWorks 中找不到方法(我知道 Squeak 中有一个 Array2d 类,但我必须使用 VW)。

0 投票
1 回答
213 浏览

smalltalk - 如何在smalltalk中重绘列表

我的 smalltalk 应用程序中有一个由用户事件更新的列表。该列表会正确更新,但它只会在强制重绘窗口时重绘、重绘或刷新。所以它会按预期显示,但只有当我隐藏然后重新显示窗口,或者将其拖出屏幕然后重新打开时。

每当更新列表时,如何使应用程序窗口自动重绘?