我的 C# 代码有一个struct要导出到 COM 的代码。该结构的属性带有奇怪的名称,这些名称甚至在 VB6 中都不是有效语法,因此无法访问它们。
有什么方法可以让它们以正常、可用的名称导出吗?我是否缺少某个属性或其他内容?
COM/VB6 中名称的格式为:
<original_name>k__BackingField
Run Code Online (Sandbox Code Playgroud)
其中只有original_name部分位于我的 C# 代码中。
我只能在 VB6 对象浏览器中看到这些疯狂的属性名称,Intellisense 不会显示它。
这是正在构建的(稍微清理过的)代码:
[Guid("....")]
[ComVisible(true)]
public struct MyStruct
{
public string StringA { get; set; }
public string StringB { get; set; }
public MyStruct(string a, string b)
{
StringA = a;
StringB = b;
}
... // some other methods, no fields or properties
}
Run Code Online (Sandbox Code Playgroud)
为了更好地衡量,这里是生成的 IDL:
typedef [uuid(....), version(1.0), custom(xxxx, MyNamespace.MyStruct)]
struct tagMyStruct {
LPSTR <StringA>k__BackingField;
LPSTR <StringB>k__BackingField; …Run Code Online (Sandbox Code Playgroud) 我是VB6的新手,我这样做只是因为我有一个25年前创建的项目。
我需要限制表单的大小,特别是MinWidth和MaxHeight。
我有没有可以像WinForms或WPF中那样使我做到的属性?
例:
FormName.MinWidth =1000;
Run Code Online (Sandbox Code Playgroud)
我试过了,但无法正常工作:
If W < 7399 Then
W = 7400
Enabled = False
DoEvents: DoEvents
Enabled = True
ElseIf W >= 7400 Then
W = cmdSelect.Width
DoEvents: DoEvents
Enabled = True
End If
Run Code Online (Sandbox Code Playgroud) 场景是这样的:从数据库中读取新闻,每条新闻显示几秒钟,然后淡出并显示下一条新闻。就像福克斯新闻等新闻网络上的突发新闻一样..
我的主要问题是文本如何淡出并显示下一条新闻?Visual Basic 6 中有许多表单淡入/淡出的示例,但文本却没有。
通过这段代码,我可以在 3 秒后显示新闻文本,然后将其删除。但我希望新闻文本逐渐消失并显示下一条新闻。
Dim EndTime As Long
Dim eee As String
EndTime = Timer + 3
Do While Timer < EndTime
eee = CLng(EndTime - Timer)
DoEvents
Loop
lbl(0).Caption = ""
Run Code Online (Sandbox Code Playgroud) 我正在将VB6应用程序转换为C#.我开始在VB6应用程序的顶部,并从那里开始.什么是RS.东西?我不明白?
Sub Main()
Dim RS As ADODB.Recordset
Dim FileName As String, FilePath As String
Dim Test As Boolean
Dim ResultCode As xcdError
Dim oAccess As Access.Application
Dim Zip_File As String
On Error GoTo ErrorHandler
' Make a connection to the database
Call MakeDBConnection
' Create a recordset of the directories to check
Set RS = New ADODB.Recordset
RS.ActiveConnection = DB
RS.CursorType = adOpenDynamic
RS.LockType = adLockOptimistic
RS.Open "Select ConversionDefinition.* From ConversionDefinition"
' Check the directories for Raw Data
' If …Run Code Online (Sandbox Code Playgroud) 什么是Collada场景图?
我可以拍摄一个我从Google 3D仓库下载并以某种方式将其转换为Collada场景图的场景吗?
该过程是否以某种方式分割场景?
有没有办法在不使用Webbrowser或MSInet组件的情况下在VB6应用程序中打开URL?谢谢
我只是想将VB6函数之一转换为VB.Net,下面是转换语句我面临的问题
Option Strict Off
Option Explicit On
Imports Microsoft.VisualBasic.Compatibility.VB6
Imports System
Imports System.Runtime.InteropServices
Module FunctionCmd_Msg
Public FunCommand_Msg As Fun_CommandMessage = Fun_CommandMessage.CreateInstance()
'Function Command Message
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _ _
Public Structure Fun_CommandMessage
<VBFixedString(1)> Public one As String
<VBFixedString(1)> Public two As String
<VBFixedString(3)> Public three As String
Dim five As String
<VBFixedString(8)> Public four As String
Public Shared Function CreateInstance() As Fun_CommandMessage
Dim result As New Fun_CommandMessage
result.one = String.Empty
result.two = String.Empty
result.three = String.Empty
result.four = String.Empty
result.five = …Run Code Online (Sandbox Code Playgroud) 在探索sarathi 当前文件行号问题的另一个答案时,我写了这个单行,期望它将打印所有提供的文件的第一行:
$ perl -ne 'print "$ARGV : $_" if __LINE__ == 1;' *txt
Run Code Online (Sandbox Code Playgroud)
这没有按预期工作; 所有的线都印了.
运行单行-MO=Deparse显示表示条件不存在.我假设这是因为它在编译时被恒定折叠:
$ perl -MO=Deparse -ne 'print "$ARGV : $_" if __LINE__ == 1;' *txt
LINE: while (defined($_ = <ARGV>)) {
print "$ARGV : $_";
}
-e syntax OK
Run Code Online (Sandbox Code Playgroud)
但为什么?
在Perl 5.8.8下运行.
我有一个函数DisplayPlot,它将字符串列表作为输入(指的是数据帧中的列).例如,如果list_string = c("string1","string2"),循环使用list_string的元素,我想并排显示两个ggplots.
到目前为止,我在我的函数中所做的是将ggplots存储到列表中:
for (i in 1:length(list_string){
p = ggplot(data=d, aes(x=d[,1], y=as.numeric(levels(d[,(i+1)]))[d[,(i+1)]], fill=d[,1])) +
geom_bar(stat="identity") +
guides(fill=FALSE) +
labs(x = Y) + labs(y = paste("CP",list_X[i],"_per_",Y,sep = ""))
graph[[length(graph) + 1]] <- p }
Run Code Online (Sandbox Code Playgroud)
并返回:
return(list(graph=graph, along with some other information))
Run Code Online (Sandbox Code Playgroud)
问题是,如果我想使用类似的函数grid.arrange,我需要手动编写图的名称:grid.arrange(p1,p2,ncol=2)而在我的情况下,这个数字可能会有所不同,并存储在列表中(grid.arrange不喜欢的格式).
非常感谢您的帮助,克莱门特
什么是注册表子树HKCR\VBKeySave5?为什么它对VB6 IDE性能有如此巨大的影响?
背景:
我们的一台开发PC(Windows 10 x64)加载VB6 IDE非常慢.IDE最初加载速度很慢,而且启动项目引用窗口的速度很慢.(几十秒,甚至几分钟).
清除项目使用的库之一的注册表显示了子树HKCR\VBKeySave5.在这个子树下有成千上万的条目,看起来像你用VB6 DLL等获得的GUID,类ID,类名等通常的COM沼泽地.
删除此密钥及其下的所有内容使IDE执行速度更快 - 基本上它会加载然后立即显示引用窗口.
由于这一点,似乎没有发生任何坏事.