none
想请教各位我可以如何save 多个 WritePrivateProfileString 目前我的program可以save 1 个data 进 txt file RRS feed

  • 问题

  • 我develop一个program来record我user的举动, 我想增加save user 举动的data 当我加  

    WritePrivateProfileString("CHECKER_CBCID", intCounter, strtime,MyCBCID, strSavePath) 我会收这个error


    以下是我的program

    Private Declare Unicode Function GetPrivateProfileString Lib "kernel32" _
    Alias "GetPrivateProfileStringW" (ByVal lpApplicationName As String, _
    ByVal lpKeyName As String, ByVal lpDefault As String, _
    ByVal lpReturnedString As String, ByVal nSize As Int32, _
    ByVal lpFileName As String) As Int32

        Private Declare Unicode Function WritePrivateProfileString Lib "kernel32" _
        Alias "WritePrivateProfileStringW" (ByVal lpApplicationName As String, _
        ByVal lpKeyName As String, ByVal lpString As String, _
        ByVal lpFileName As String) As Int32

     Public Sub ProceedSave()

            Dim strtime As String
            Dim MyCBCID As String

            MyCBCID = DataGridView1("CBCID", DataGridView1.CurrentCell.RowIndex).Value
            strtime = Format(Now, "HH-mm")

            WriteRecord(strtime, MyCBCID)

        End Sub

    我的program无法save成功strtime的data

    Public Sub WriteRecord(ByVal strtime As String, ByVal MyCBCID As String)

            DateNow = Date.Now.ToString("yyyyMMdd")
            TimeNow = TimeOfDay.ToString("HH:mm:ss")

            strCurrPath = (Application.StartupPath)
            strCurrPath = Replace(Application.StartupPath, "\bin\Debug", "")


            strSavePath = strCurrPath + "\Record\" + DateNow + ".txt"
            If File.Exists(strSavePath) Then
                intCounter = CInt(RetrieveFromIniFile("CHECKER_CBCID", "COUNT", 0, strSavePath))
            End If
            intCounter = intCounter + 1

            If File.Exists(strSavePath) Then
                WritePrivateProfileString("CHECKER_CBCID", "COUNT", intCounter, strSavePath)
                WritePrivateProfileString("CHECKER_CBCID", intCounter, MyCBCID, strSavePath)
                
            Else
                File.Create(strSavePath).Dispose()
                WritePrivateProfileString("CHECKER_CBCID", "COUNT", intCounter, strSavePath)
                WritePrivateProfileString("CHECKER_CBCID", intCounter, MyCBCID, strSavePath)

            End If

        End Sub

    请各位大大帮忙

    2019年12月19日 1:29

答案

  • Hi christing, 

    如果你所说的model是指MVC中的model的话,那么model包含除纯视图和控制器逻辑之外的所有应用程序逻辑(业务逻辑,验证逻辑和数据访问逻辑),model既可以保存也可以处理应用程序数据。

    如果model是更为广泛的编程模型的概念,以下这篇文档对其进行详细的介绍。

    Programming Models

    VB中的module定义了整个名称空间中可用的引用类型, 只能在命名空间级别使用 Module, 并且其与程序具有相同的生存期。

    请参考下面的链接。

    1. Classes vs. Modules in VB.NET
    2. VB.NET What is the purpose of a class or module?

    希望这有帮助。

    另外, 如果你的问题和原始问题联系不大的话,我建议你创建一个新的问题,我们会在新问题下给你回答,这样有利于其他遇到类似问题的人方便找到答案。

    Best Regards,

    Xingyu Zhao


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 christing 2020年3月9日 9:32
    2020年1月3日 7:49
    版主

全部回复

  • Hi christing,

    我尝试用你的代码进行测试,但是我需要更多的信息。

    你能提供关于'RetrieveFromIniFile'的代码吗?

    另外,我发现在你使用 'WritePrivateProfileString("CHECKER_CBCID", intCounter, strtime,MyCBCID, strSavePath)'时,你添加五个参数, 但是我没有发现有包含五个参数的这样子的方法。


    Best Regards,

    Xingyu Zhao


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2019年12月19日 9:59
    版主
  • @Xingyu Zhao

    感谢你的回复

    RetrieveFromIniFile

     Public Function RetrieveFromIniFile(ByVal strHeader As String, ByVal strtitle As String, ByVal strDafaultData As String, ByVal strPath As String)
            Dim n As Int32
            Dim sData As String = Space$(1024)
            n = GetPrivateProfileString(strHeader, strtitle, strDafaultData, sData, sData.Length, strPath)
            If n > 0 Then
                Return sData.Substring(0, n)
            Else
                Return strDafaultData
            End If
        End Function

    关于[("CHECKER_CBCID", intCounter, strtime,MyCBCID, strSavePath)'时,你添加五个参数, 但是我没有发现有包含五个参数的这样子的方法]

    CHECKER_CBCID", intCounter 是txt file 中的标题

     

    关于[ strtime,MyCBCID]是从program中user输入的content

        Dim strtime As String
            Dim MyCBCID As String

            MyCBCID = DataGridView1("CBCID", DataGridView1.CurrentCell.RowIndex).Value
            strtime = Format(Now, "HH-mm")

            WriteRecord(strtime, MyCBCID)

    关于[strSavePath ]

    将file save 进Record text file strSavePath = strCurrPath + "\Record\" + DateNow + ".txt"

    2019年12月20日 0:41
  • Hi christing, 

    感谢你的回复。

    你的代码没有问题,这是我使用你的代码的测试结果.

    WritePrivateProfileString()没有五个参数的方法,你只能使用四个参数。如果你想将strtimeMyCBCID作为内容输入,你可以将他们合并成一个字符串以后再使用WritePrivateProfileString()方法。

    Best Regards,

    Xingyu Zhao


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2019年12月23日 5:30
    版主
  • @Xingyu Zhao

    谢谢你的答复。我想问 Programming 中的 Model  和 module 的意义是指什么。

    我上网查过所理解的model是指program中的功能。我指的功能是指对象功能设计,比如:我有一个text box tool 然后我为那个text box设定那个text box的功能比如fill字会呈现蓝色, word limit过了多少不能再加等等。除此之外, 就是对数据库的控制的意思。

    不知Xingyu Zhao 有更清晰的解说Model  和 module 意义吗? 谢谢

    我还蛮经常听到人问人说你program的module是什么。我理解这个意思不是很清晰我明白所指(数据库记录列表



    2020年1月3日 0:43
  • Hi christing, 

    如果你所说的model是指MVC中的model的话,那么model包含除纯视图和控制器逻辑之外的所有应用程序逻辑(业务逻辑,验证逻辑和数据访问逻辑),model既可以保存也可以处理应用程序数据。

    如果model是更为广泛的编程模型的概念,以下这篇文档对其进行详细的介绍。

    Programming Models

    VB中的module定义了整个名称空间中可用的引用类型, 只能在命名空间级别使用 Module, 并且其与程序具有相同的生存期。

    请参考下面的链接。

    1. Classes vs. Modules in VB.NET
    2. VB.NET What is the purpose of a class or module?

    希望这有帮助。

    另外, 如果你的问题和原始问题联系不大的话,我建议你创建一个新的问题,我们会在新问题下给你回答,这样有利于其他遇到类似问题的人方便找到答案。

    Best Regards,

    Xingyu Zhao


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 christing 2020年3月9日 9:32
    2020年1月3日 7:49
    版主