簡體   English   中英

將VB6類型轉換為C#結構

[英]Converting VB6 Type to C# struct

Public Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
End Type

這是我原來的VB6代碼,轉換后的C#代碼是

public struct WIN32_FIND_DATA
{
    long dwFileAttributes;
    FILETIME ftLastAccessTime;
    FILETIME ftLastWriteTime;
    long nFileSizeHigh;
    long nFileSizeLow;
    long dwReserved0;
    long dwReserved1;
    cFileName As String * max_path;
    cAlternate As String * 14
}

如何將cFileName As String * max_path轉換為C#

看來您想編組struct (例如,在調用FindFirstFileExFindNextFile API函數時); 如果是你的情況

using System.Runtime.InteropServices;

... 

[StructLayout(LayoutKind.Sequential)]
struct WIN32_FIND_DATA
{
    public uint dwFileAttributes;
    public System.Runtime.InteropServices.ComTypes.FILETIME ftCreationTime;
    public System.Runtime.InteropServices.ComTypes.FILETIME ftLastAccessTime;
    public System.Runtime.InteropServices.ComTypes.FILETIME ftLastWriteTime;
    public uint nFileSizeHigh;
    public uint nFileSizeLow;
    public uint dwReserved0;
    public uint dwReserved1;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_PATH)] // MAX_PATH = 260
    public string cFileName;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]
    public string cAlternateFileName;
}

有關詳細信息,請參見原始WIN32_FIND_DATA聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM