有没有办法在 TextStream 文件中向后导航?

2023-12-09

我已经开始使用 fso 对象来克服 VBA 的 2GB 限制。一切看起来都符合我的目的,只是我找不到路要走向后在文本流文件中。为了继续前进,我使用了读取(字符数)和跳过(字符数)。有办法这样做吗?


我遇到了同样令人沮丧的限制。这是一个包装本机 Windows API 来执行文件 IO 的类。如前所述,它基于 msdn 上的示例http://support.microsoft.com/kb/189981。我还没有完成彻底的测试,所以如果您发现任何问题,请告诉我,以便我可以为了我们双方的利益而修复它们。顺便说一句,CanRead、CanWrite 的东西就在那里,所以我最终可以实现一个流接口,但那是一个未来的项目。

Option Compare Database
Option Explicit

'Based on the example on msdn:
'http://support.microsoft.com/kb/189981

'Some of the constants come from Winnt.h

Public Enum FileAccess
'    FILE_READ_DATA = &H1                     ' winnt.h:1801
'    'FILE_LIST_DIRECTORY = &H1                ' winnt.h:1802
'    FILE_WRITE_DATA = &H2                    ' winnt.h:1804
'    'FILE_ADD_FILE = &H2                      ' winnt.h:1805
'    FILE_APPEND_DATA = &H4                   ' winnt.h:1807
'    'FILE_ADD_SUBDIRECTORY = &H4              ' winnt.h:1808
'    'FILE_CREATE_PIPE_INSTANCE = &H4          ' winnt.h:1809
'    FILE_READ_EA = &H8                       ' winnt.h:1811
'    FILE_READ_PROPERTIES = &H8               ' winnt.h:1812
'    FILE_WRITE_EA = &H10                     ' winnt.h:1814
'    FILE_WRITE_PROPERTIES = &H10             ' winnt.h:1815
'    FILE_EXECUTE = &H20                      ' winnt.h:1817
'    'FILE_TRAVERSE = &H20                     ' winnt.h:1818
'    'FILE_DELETE_CHILD = &H40                 ' winnt.h:1820
'    FILE_READ_ATTRIBUTES = &H80              ' winnt.h:1822
'    FILE_WRITE_ATTRIBUTES = &H100            ' winnt.h:1824
    FILE_ALL_ACCESS = &H1F01FF               ' winnt.h:1826
    FILE_GENERIC_READ = &H120089             ' winnt.h:1828
    FILE_GENERIC_WRITE = &H120116            ' winnt.h:1835
'    FILE_GENERIC_EXECUTE = &H1200A0          ' winnt.h:1843
'    FILE_SHARE_READ = &H1                    ' winnt.h:1848
'    FILE_SHARE_WRITE = &H2                   ' winnt.h:1849
'    FILE_NOTIFY_CHANGE_FILE_NAME = &H1       ' winnt.h:1860
'    FILE_NOTIFY_CHANGE_DIR_NAME = &H2        ' winnt.h:1861
'    FILE_NOTIFY_CHANGE_ATTRIBUTES = &H4      ' winnt.h:1862
'    FILE_NOTIFY_CHANGE_SIZE = &H8            ' winnt.h:1863
'    FILE_NOTIFY_CHANGE_LAST_WRITE = &H10     ' winnt.h:1864
'    FILE_NOTIFY_CHANGE_SECURITY = &H100      ' winnt.h:1865
'    'MAILSLOT_NO_MESSAGE = -1                ' winnt.h:1866
'    'MAILSLOT_WAIT_FOREVER = -1              ' winnt.h:1867
'    FILE_CASE_SENSITIVE_SEARCH = &H1         ' winnt.h:1868
'    FILE_CASE_PRESERVED_NAMES = &H2          ' winnt.h:1869
'    FILE_UNICODE_ON_DISK = &H4               ' winnt.h:1870
'    FILE_PERSISTENT_ACLS = &H8               ' winnt.h:1871
'    FILE_FILE_COMPRESSION = &H10             ' winnt.h:1872
'    FILE_VOLUME_IS_COMPRESSED = &H8000       ' winnt.h:1873
'    IO_COMPLETION_MODIFY_STATE = &H2         ' winnt.h:1874
'    IO_COMPLETION_ALL_ACCESS = &H1F0003      ' winnt.h:1875
'    DUPLICATE_CLOSE_SOURCE = &H1             ' winnt.h:1876
'    DUPLICATE_SAME_ACCESS = &H2              ' winnt.h:1877
'    DELETE = &H10000                         ' winnt.h:1935
'    READ_CONTROL = &H20000                   ' winnt.h:1936
'    WRITE_DAC = &H40000                      ' winnt.h:1937
'    WRITE_OWNER = &H80000                    ' winnt.h:1938
'    SYNCHRONIZE = &H100000                   ' winnt.h:1939
'    STANDARD_RIGHTS_REQUIRED = &HF0000       ' winnt.h:1941
'    STANDARD_RIGHTS_READ = &H20000           ' winnt.h:1943
'    STANDARD_RIGHTS_WRITE = &H20000          ' winnt.h:1944
'    STANDARD_RIGHTS_EXECUTE = &H20000        ' winnt.h:1945
'    STANDARD_RIGHTS_ALL = &H1F0000           ' winnt.h:1947
'    SPECIFIC_RIGHTS_ALL = &HFFFF             ' winnt.h:1949
'    ACCESS_SYSTEM_SECURITY = &H1000000
End Enum


Public Enum FileShare
    NONE = &H0
    FILE_SHARE_DELETE = &H4
    FILE_SHARE_READ = &H1
    FILE_SHARE_WRITE = &H2
End Enum


Public Enum FileCreationDisposition
    CREATE_ALWAYS = &H2
    CREATE_NEW = &H1
    OPEN_ALWAYS = &H4
    OPEN_EXISTING = &H3
    TRUNCATE_EXISTING = &H5
End Enum


'Public Enum FileFlagsAndAttributes
'    'Attributes
'    FILE_ATTRIBUTE_ENCRYPTED = &H4000
'    FILE_ATTRIBUTE_READONLY = &H1            ' winnt.h:1850
'    FILE_ATTRIBUTE_HIDDEN = &H2              ' winnt.h:1851
'    FILE_ATTRIBUTE_SYSTEM = &H4              ' winnt.h:1852
'    FILE_ATTRIBUTE_DIRECTORY = &H10          ' winnt.h:1853
'    FILE_ATTRIBUTE_ARCHIVE = &H20            ' winnt.h:1854
'    FILE_ATTRIBUTE_NORMAL = &H80             ' winnt.h:1855
'    FILE_ATTRIBUTE_TEMPORARY = &H100         ' winnt.h:1856
'    FILE_ATTRIBUTE_ATOMIC_WRITE = &H200      ' winnt.h:1857
'    FILE_ATTRIBUTE_XACTION_WRITE = &H400     ' winnt.h:1858
'    FILE_ATTRIBUTE_COMPRESSED = &H800        ' winnt.h:1859
'    'Flags
'    FILE_FLAG_BACKUP_SEMANTICS = &H2000000
'    FILE_FLAG_DELETE_ON_CLOSE = &H4000000
'    FILE_FLAG_NO_BUFFERING = &H20000000
'    FILE_FLAG_OPEN_NO_RECALL = &H100000
'    FILE_FLAG_OPEN_REPARSE_POINT = &H200000
'    FILE_FLAG_OVERLAPPED = &H40000000
'    FILE_FLAG_POSIX_SEMANTICS = &H100000
'End Enum


Private Const INVALID_FILE_HANDLE = -1 '&HFFFFFFFF
Private Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Private Const INVALID_FILE_SIZE As Long = -1 '&HFFFFFFFF
Private Const INVALID_SET_FILE_POINTER As Long = -1 '&HFFFFFFFF


Private Declare Function FormatMessage Lib "Kernel32" Alias "FormatMessageA" (ByVal dwFlags As Long, _
                                                                              lpSource As Long, _
                                                                              ByVal dwMessageId As Long, _
                                                                              ByVal dwLanguageId As Long, _
                                                                              ByVal lpBuffer As String, _
                                                                              ByVal nSize As Long, _
                                                                              Arguments As Any) As Long


Private Declare Function CreateFile Lib "Kernel32" Alias "CreateFileA" (ByVal lpFileName As String, _
                                                                        ByVal dwDesiredAccess As Long, _
                                                                        ByVal dwShareMode As Long, _
                                                                        lpSecurityAttributes As Long, _
                                                                        ByVal dwCreationDisposition As Long, _
                                                                        ByVal dwFlagsAndAttributes As Long, _
                                                                        hTemplateFile As Long) As Long


Private Declare Function SetFilePointer Lib "Kernel32" (ByVal hFile As Long, _
                                               ByVal lDistanceToMove As Long, _
                                               lpDistanceToMoveHigh As Long, _
                                               ByVal dwMoveMethod As Long) As Long


Private Declare Function ReadFile Lib "Kernel32" (ByVal hFile As Long, _
                                                  lpBuffer As Any, _
                                                  ByVal nNumberOfBytesToRead As Long, _
                                                  lpNumberOfBytesRead As Long, _
                                                  ByVal lpOverlapped As Long) As Long


Private Declare Function WriteFile Lib "Kernel32" (ByVal hFile As Long, _
                                                   lpBuffer As Any, _
                                                   ByVal nNumberOfBytesToWrite As Long, _
                                                   lpNumberOfBytesWritten As Long, _
                                                   ByVal lpOverlapped As Long) As Long


Private Declare Function FlushFileBuffers Lib "Kernel32" (ByVal hFile As Long) As Long


Private Declare Function GetFileSize Lib "Kernel32" (ByVal hFile As Long, _
                                                     lpFileSizeHigh As Long) As Long


Private Declare Function CloseHandle Lib "Kernel32" (ByVal hObject As Long) As Long

Private m_Handle As Long

Private Sub Class_Terminate()
    If Not m_Handle = 0 Then
        Flush
        CloseFile
    End If
End Sub

Public Sub OpenFile(path As String, Optional access As FileAccess = FileAccess.FILE_GENERIC_READ, Optional share As FileShare = FileShare.NONE, Optional CreationDisposition As FileCreationDisposition = FileCreationDisposition.OPEN_ALWAYS)
    Dim Ret As Long
    Ret = CreateFile(path, access, share, ByVal 0&, CreationDisposition, 0&, ByVal 0&)
    If Ret = INVALID_FILE_HANDLE Then
        Err.Raise vbObjectError + Err.LastDllError, "clsFile.OpenFile", DecodeAPIErrors(Err.LastDllError)
    Else
        m_Handle = Ret
    End If
End Sub

'Properties

Public Property Get Length() As Double
    Dim Ret As Currency
    Dim FileSizeHigh As Long
    Ret = GetFileSize(m_Handle, FileSizeHigh)
    If Not Ret = INVALID_FILE_SIZE Then
        Length = Ret
    Else
        Err.Raise vbObjectError + Err.LastDllError, "clsFile.Length", DecodeAPIErrors(Err.LastDllError)
    End If
End Property

Public Property Get Position() As Long
    Dim Ret As Long
    Dim DistanceToMoveHigh As Long
    Ret = SetFilePointer(m_Handle, 0&, DistanceToMoveHigh, 1&) '1 is FILE_CURRENT
    If DistanceToMoveHigh = 0 Then
        If Ret = -1 Then
            Position = -1 'EOF'
        Else
            Position = Ret
        End If
    Else
        Class_Terminate
        Err.Raise vbObjectError + Err.LastDllError, "clsFile.Position", DecodeAPIErrors(Err.LastDllError)
    End If
End Property

Public Property Get Handle() As Long
    Handle = m_Handle
End Property

'Functions

Public Function ReadBytes(ByRef buffer() As Byte, ByVal buffer_offset As Long, ByVal count As Long) As Long
    Dim Ret As Long
    Dim BytesRead As Long
    Ret = ReadFile(m_Handle, buffer(buffer_offset), count, BytesRead, 0&)
    If Ret = 1 Then
        ReadBytes = BytesRead
    Else
        Class_Terminate
        Err.Raise vbObjectError + Err.LastDllError, "clsFile.ReadBytes", DecodeAPIErrors(Err.LastDllError)
    End If
End Function

Public Function ReadBytesPtr(ByVal ptrBuf As Long, ByVal buffer_offset As Long, ByVal count As Long) As Long
    Dim Ret As Long
    Dim BytesRead As Long
    Ret = ReadFile(m_Handle, ByVal ptrBuf + buffer_offset, count, BytesRead, 0&)
    If Ret = 1 Then
        ReadBytesPtr = BytesRead
    Else
        Class_Terminate
        Err.Raise vbObjectError + Err.LastDllError, "clsFileStream.ReadBytesPtr", DecodeAPIErrors(Err.LastDllError)
    End If
End Function

Public Function WriteBytes(ByRef buffer() As Byte, ByVal buffer_offset As Long, ByVal count As Long) As Long
    Dim Ret As Long
    Dim BytesWritten As Long
    Ret = WriteFile(m_Handle, buffer(buffer_offset), count, BytesWritten, 0&)
    If Ret = 1 Then
        WriteBytes = BytesWritten
    Else
        Class_Terminate
        Err.Raise vbObjectError + Err.LastDllError, "clsFile.WriteBytes", DecodeAPIErrors(Err.LastDllError)
    End If
End Function

Public Function WriteBytesPtr(ByVal ptrBuf As Long, ByVal buffer_offset As Long, ByVal count As Long) As Long
    Dim Ret As Long
    Dim BytesWritten As Long
    Ret = WriteFile(m_Handle, ByVal ptrBuf + buffer_offset, count, BytesWritten, 0&)
    If Ret = 1 Then
        WriteBytesPtr = BytesWritten
    Else
        Class_Terminate
        Err.Raise vbObjectError + Err.LastDllError, "clsFile.WriteBytes", DecodeAPIErrors(Err.LastDllError)
    End If
End Function

Public Function SeekFile(ByVal LoBytesOffset As Long, origin As SeekOrigin) As Long
    Dim Ret As Long
    Dim HiBytesOffset As Long
    Ret = SetFilePointer(m_Handle, LoBytesOffset, HiBytesOffset, origin)
    If Not Ret = INVALID_SET_FILE_POINTER Then
        SeekFile = Ret
    Else
        Err.Raise vbObjectError + Err.LastDllError, "clsFile.SeekFile", DecodeAPIErrors(Err.LastDllError)
    End If
End Function

Public Function SeekFile64bit(ByVal offset As Currency, origin As SeekOrigin) As Currency
'Take care with this function. A Currency variable is an 8-byte (64-bit) scaled (by 10,000) fixed-point number.'
'This means that setting a Currency variable to 0.0001 is the equivalent of a binary value of 1.'
'If you want to set an offset with an immediate value, write it like so:'
'1073741824 Bytes (1 GB) would be 107374.1824@, where @ is the symbol for an immediate Currency value.'
'Refer to http://support.microsoft.com/kb/189862 for hints on how to do 64-bit arithmetic'
    Dim Ret As Long
    Dim curFilePosition As Currency
    Dim LoBytesOffset As Long, HiBytesOffset As Long

    CopyMemory VarPtr(HiBytesOffset), VarPtr(offset) + 4, 4
    CopyMemory VarPtr(LoBytesOffset), VarPtr(offset), 4

    Ret = SetFilePointer(m_Handle, LoBytesOffset, HiBytesOffset, origin)

    CopyMemory VarPtr(curFilePosition) + 4, VarPtr(HiBytesOffset), 4
    CopyMemory VarPtr(curFilePosition), VarPtr(Ret), 4

    SeekFileCurrency = curFilePosition
End Function

Public Sub CloseFile()
    Dim Ret As Long
    Ret = CloseHandle(m_Handle)
    m_Handle = 0
End Sub

Public Sub Flush()
    Dim Ret As Long
    Ret = FlushFileBuffers(m_Handle)
End Sub

 '***********************************************************************************
' Helper function, from Microsoft page as noted at top
Private Function DecodeAPIErrors(ByVal ErrorCode As Long) As String
    Dim sMessage As String, MessageLength As Long
    sMessage = Space$(256)
    MessageLength = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0&, _
                                  ErrorCode, 0&, sMessage, 256&, 0&)
    If MessageLength > 0 Then
        DecodeAPIErrors = Left(sMessage, MessageLength)
    Else
        DecodeAPIErrors = "Unknown Error."
    End If
End Function

这是如何使用它的示例:

Public Sub Main()
    Dim oFile As clsFile
    Set oFile = New clsFile

    oFile.OpenFile "C:\YourFilePathHere", FILE_GENERIC_READ, NONE, OPEN_EXISTING

    Dim ChunkOfData() As Byte
    Const CHUNKSIZE As Long = 4096
    ReDim ChunkOfData(0 To CHUNKSIZE - 1)

    Dim lngCurrChunk As Long
    Dim lngBytesRead As Double


    'The SeekFile function works for seeks forward or backward in the file from [-2GB to +2GB).'
    'Past that you can use the SeekFile64bit function, but you'll have to be aware of the issues with using Currency to store the 64-bit number'
    Debug.Print oFile.SeekFile(&H40000000, so_Current) 'A 1GB seek

    lngBytesRead = oFile.ReadBytes(ChunkOfData, 0, CHUNKSIZE)
    While lngBytesRead > 0 'As soon as a call to ReadBytes returns 0, we've reached the end of the file.
        'Do something with the 4k chunk of data.  The buffer gets reused in this example.
        'Debug.Print ChunkOfData
        lngCurrChunk = lngCurrChunk + 1
        lngBytesRead = oFile.ReadBytes(ChunkOfData, 0, CHUNKSIZE)
    Wend
    MsgBox "Complete!"
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法在 TextStream 文件中向后导航? 的相关文章

  • 如何以编程方式从 Excel 中的 VBA 宏中删除数字签名?

    有没有办法以编程方式从 Excel 工作表的 VBA 宏中删除数字签名 即相当于进入 VBA 编辑器 转到 工具 菜单 gt 数字签名 并单击 删除 的代码 有趣的问题 出于安全原因 它故意不属于 Excel 对象模型的一部分 可以从证书存
  • Range.End() 困惑

    我有一个关于 VBA 中 Range End 属性的一般性问题 我已经阅读了有关该房产的信息here http msdn microsoft com en us library bb221181 aspx 但我还是很困惑 例子 With w
  • 需要在Excel中合并3列

    我有 3 列 A B C 我需要合并这 3 列 并且我已经应用了 forumala A1 B1 C1输出为 E 列 我需要输出为 D 列 下面的公式将达到您想要的结果 TEXTJOIN TRUE A1 C1 Textjoin 的工作方式类似
  • 如果 FIND 函数在 vba 中找不到任何内容,那么[重复]

    这个问题在这里已经有答案了 我目前正在自动化执行以下步骤的手动流程 1 提示用户打开一个数据文件并打开文件 2 插入4列 3 使用文件中已有的数据创建格式为 DD MM YYYY TEXT 的唯一字符串 其中文本是变量 4 使用 if 语句
  • MS Access 中的舍入

    VBA Access 中舍入的最佳方法是什么 我目前的方法是利用Excel方法 Excel WorksheetFunction Round 但我正在寻找一种不依赖Excel的方法 请注意 VBA Round 函数使用 Banker 舍入 将
  • 选择在 Excel 宏(VBA 中的范围对象)中具有值的列

    如何修改 VBA 中的这一行以仅选择具有值的列 Set rng Range A1 Range A65536 End xlUp SpecialCells xlCellTypeVisible 我不认为我做的事情是正确的CountLarge财产是
  • 使用 VBA 通过简单命令从非连续范围的并集获取值到数组中(无循环)

    我有以下任务 表面上很简单 使用 VBA 将电子表格上多个列的值复制到二维数组中 为了让生活更有趣 这些柱子并不相邻 但它们的长度都相同 显然 可以通过依次循环每个元素来做到这一点 但这看起来非常不优雅 我希望有一个更紧凑的解决方案 但我很
  • For...VBA 中的下一个循环超出限制

    我正在使用一个For Next循环填充数组 如下所示 ReDim array 1 to 100 1 to 100 For i 1 to 100 Next i But the i计数器似乎总是转到 101 而不是停止在 100 因此 这会在我
  • 在 VBA 中循环合并单元格

    是否可以循环遍历合并的单元格vba questions tagged vba 我的范围内有 6 个合并单元格B4 B40 我只需要这 6 个单元格中的值 6 次迭代 上面的答案看起来已经让你排序了 如果您不知道合并的单元格在哪里 那么您可以
  • 我可以用文本框设置变量名称吗? excel

    我可以使用 TextBox Vba Excel 设置变量的名称吗 我必须以在文本框中写入组名称并单击命令按钮的方式输入新的产品组 代码必须从文本框中获取字符串 并将该字符串设置为新创建的数组的名称 我只想在运行时创建一个新变量 或数组 据信
  • 如何使用VBA根据条件删除Excel中的行?

    我目前正在构建一个宏来格式化数据表并删除不适用的数据行 具体来说 我希望删除列 L ABC 的行以及删除列 AA DEF 的行 到目前为止 我已经实现了第一个目标 但还没有实现第二个目标 现有代码是 Dim LastRow As Integ
  • 将ADODB二进制流转换为字符串vba

    我有以下问题 我有一个存储在服务器上的 CSV 文件 但它有 3 个字符作为分隔符 我想从 URL 加载数据并使用 作为分隔符将数据填充到 Excel 页面的列中 到目前为止 我找到了使用 ADODB 记录集从网站加载文件的代码 但我无法进
  • 无法摆脱脚本中的硬编码延迟

    我用 vba 结合 selenium 编写了一个脚本来解析网页中可用的所有公司名称 该网页启用了延迟加载方法 因此每个滚动中只有 20 个链接可见 如果我滚动 2 次 则可见链接数为 40 个 依此类推 该网页中有 1000 个可用链接 我
  • 在 VBA Excel 中查找、剪切和插入行以匹配借项和贷项值

    我在 Sheet1 中有以下设置数据 并从第 4 行 A 列开始 其中标题位于第 3 行 No Date Code Name Remarks D e b i t Cr e d i t 1 4 30 2015 004 AB 01 04 15
  • Excel VBA - 添加自定义数字格式

    我有一个在 Excel 外部生成的文件 其中包含许多百分比 所有这些百分比都有一位小数 当导入到 Excel 中时 Excel 会在百分比中添加第二位小数 这似乎是 Excel 中百分比的某种默认格式 它只是添加了一个 0 我想将所有两位小
  • Redim Preserve 给出“下标超出范围”

    我想要Redim Preserve一个数组我不断收到错误 下标超出范围 我知道只有最后一个维度的大小可以更改 这正是我正在做的事情 这里出了什么问题 数组的类型是Variant BmMatrix Sheets BENCH Range a60
  • 从 MS Access 调用存储过程会导致错误 3146

    当我使用下面所示的代码从 MS Access 前端调用 SQL Server 存储过程时 它停止运行并抛出运行时错误 3146 这个存储过程在 SQL Server 中工作正常 但是当我从 MS Access 运行时 它首先工作 但突然停止
  • Excel 2013 数据透视表不会更改当前页面,除非手动导航到

    我们有一小段 VBA 代码 多年来一直完美运行 本质上是 Me PivotTables APivot PivotFields AField CurrentPage Some text 这种方法一直有效 直到 Excel 2013 该行将失败
  • 通过 Excel / VBA 调用 DLL 中的 C++ 函数在传递双参数时生成异常

    我试图通过 DLL 在 Excel VBA 中使用 C C 静态函数 我在 VS17 中调试时遇到异常 我怀疑这是参数传递方式的问题 它是双精度 EXCEL EXE 中 0x00007FFA28BBA14F kernel32 dll 处抛出
  • 替换字符串变量中的多个字符 (VBA)

    如何替换字符串变量中的多个内容 这是我在 VBA 中的示例函数 Private Function ExampleFunc ByVal unitNr As String If InStr unitNr OE gt 0 Then unitNr

随机推荐

  • NSAutoresizingMaskLayoutConstraint 的 UITableViewCell 舍入错误,但在 Storyboard 和 heightForRowAtIndexPath 中正确设置大小:

    我正在尝试使用 AutoLayout 在表视图单元格中配置子视图 在理想情况下 希望表视图单元格的高度足以包含所有子视图 然而 这似乎不可能 因为单元的高度是在实际创建单元之前确定的 因此 现在 我只是查看了设置的约束并计算了包含所有内容所
  • 每个项目的 Terraform 都有不同的后端

    我是 Terraform 的新手 仍在研究文档 尚未找到一种方法来适应我需要实现的特定解决方案的设置 并希望某种灵魂能够能够推动我朝正确的方向前进 我正在尝试管理一组参数化模板 这些模板部署支持我们在 GCP 中开发的新应用程序所需的一切
  • Neo4j 中带空格的全文搜索

    当 neo4j lucene 自动索引处于精确模式 默认 时 查询类型为 start n node node auto index name asfd a return n 正常工作 假设您有一个名为asdf adsf例如 但是 当将索引切
  • 使用 Docker Swarm 和覆盖网络进行组播

    我正在测试使用多播进行发现的应用程序 我创建了一个 Swarm 集群和一个network create d overlay swarm net因此容器在多个 Swarm 代理主机之间共享相同的 LAN 发现好像不行 所以我安装了tshark
  • 新版本应用部署后需要重启apache + APC吗?

    当我们部署应用程序时 我们只需创建一个新文件夹并指向它的符号链接 这样 apache 就会始终找到最新版本 然而 当我们部署并继续测试而不首先重新启动 apache 服务器时 我们会遇到奇怪的错误 我们还运行了 APC 感觉缓存与此有关 当
  • 将数据从设备复制到主机时出现无效参数错误

    我在将数据从设备复制回主机时遇到问题 我的数据排列在一个结构中 typedef struct Array2D double arr int rows int cols Array2D arr是一个 平面 数组 rows and cols描述
  • 如何将 CORS 与 grails Rest API 一起使用?

    我正在使用 grails 开发 Rest Api 它正在 localhost 8080 上运行 当我与 POSTMAN 通话时 它以 json 响应 我想使用这些数据 并在其他域上运行的网页上执行 CRUD 操作 当我尝试调用用 grail
  • 解密使用 AES-128 加密的 M3U8 播放列表,无需 IV

    我目前正在构建一个用于下载 M3U8 播放列表的应用程序 但我遇到了一个问题 如果播放列表使用 AES 128 加密 例如有这样一行 EXT X KEY METHOD AES 128 URI https website com link k
  • R-标签中的剪切函数,无需科学记数法,可在 ggplot2 中使用

    我使用 cut 和 classIntervals 对 R 中的数据进行分组 然后使用 ggplot2 进行绘制 因此 按 n 3 的分位数进行切割的基本操作如下所示 library classInt a lt c 1 10 100 1000
  • Lua关闭/程序执行结束回调

    我正在为 Lua 编写一个模块 关闭 lua 解释器时 即使用户忘记隐式调用关闭例程 它也必须运行清理例程 该模块主要是用 C 编写的 我应该使用 Lua C Api 中的哪个回调来检测程序执行结束 我唯一的想法是在代表我的模块的表上使用
  • Angular 7 滤波器阵列

    我有以下角度组件 private json JsonResponseDTO constructor private dtoService PoolDTOServiceService ngOnInit this dtoService setJ
  • 如何使用 apt 安装指定版本的 Ruby

    我尝试安装指定版本 2 5 1 的 Ruby 该版本只是示例 并尝试执行以下脚本 但出现如下错误 是否可以使用 apt 安装来安装 Ruby 版本 以便我可以处理 Ruby 版本依赖性问题 sudo apt update sudo apt
  • rxjava:我可以使用 retry() 但有延迟吗?

    我在 Android 应用程序中使用 rxjava 来异步处理网络请求 现在我想仅在经过一定时间后重试失败的网络请求 有没有办法在 Observable 上使用 retry 但仅在一定延迟后重试 有没有办法让 Observable 知道当前
  • 为什么我收到“没有为复数定义排序关系”错误?

    See 这个问题一些背景 我在该问题上的主要问题已解决 建议我向另一个问题询问我遇到的第二个问题 print cubic 1 2 3 4 Correct solution about 1 65 if x gt 0 TypeError no
  • 如何在 django 模板中迭代查询集列表

    有没有办法在模板中迭代这个查询集列表
  • 解析 Prolog 中的表达式并返回抽象语法

    我必须编写 parse Tkns T 它接受标记列表形式的数学表达式并找到 T 并返回表示抽象语法的语句 尊重操作顺序和关联性 例如 parse num 3 plus num 2 star num 1 T T add integer 3 m
  • javascript - 在 html 中使用函数调用 - 坏还是好?

    使用 Angular 会带来很多奇怪的代码风格 比如我一直以为这个
  • 使用 PHP 和 Apache 路由 URL 路径

    我正在尝试为我的网站创建一个漂亮的网址结构 我的路由器类仅在 url 的样式为 something value 时才起作用 我如何得到它 它的工作方式如下 something value 在我的 htaccess 中我有 Options F
  • 修改默认的 HTML5 视频控件

    我有一个相当不寻常的问题要问你们 这可能很愚蠢 但我是这个领域的新手 我真的很感激一些帮助 正如标题所示 我想知道是否有一种方法可以禁用默认浏览器控件中的特定按钮HTML5 video 我知道每个浏览器都有自己独特的一组控件 所以我认为我不
  • 有没有办法在 TextStream 文件中向后导航?

    我已经开始使用 fso 对象来克服 VBA 的 2GB 限制 一切看起来都符合我的目的 只是我找不到路要走向后在文本流文件中 为了继续前进 我使用了读取 字符数 和跳过 字符数 有办法这样做吗 我遇到了同样令人沮丧的限制 这是一个包装本机