文件后缀为.tmp用写字板根本打不开,是些乱码,好像只在数据库中生成报表或打开数据库时才自动生成临时文件,我无法看到其中的内容,请问SUNBF,不知你打开过没有,

解决方案 »

  1.   

    创建临时文件 在Visual Basic 中 开 发 应 用 程 序 的 时 候, 可 能 会 需 要 在 磁 盘 上 创 建 一 个 临 时 目 录, 本 文 将 介 绍 如 何 在Visual Basic 版 本4.0 中 创 建 临 时 文 件。 使 用GetTempFileName 函 数 
    ---- 可 以 通 过 使 用API 函 数 中 的GetTempFileName 函 数 来 在 一 个 指 定 的 磁 盘 驱 动 器 上 创 建 一 个 新 的 文 件。 尽 管 所 创 建 的 文 件 是 一 个 临 时 的 文 件, 当 不 再 需 要 它 的 时 候, 程 序 员 还 是 需 要 将 它 从 磁 盘 上 物 理 地 删 除 掉。 
    ---- 要 在VB 中 使 用GetTempFileName 函 数, 必 须 将 如 下 的 声 明 语 句 包 含 在 程 序 中( 注 意 该 声 明 语 句 需 要 被 书 写 在 一 行 内): ---- Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long ---- 该GetTempFileName 函 数 需 要4 个 参 数: ---- 第 一 个 参 数 是 希 望 创 建 新 文 件 的 驱 动 器 和/ 或 路 径 的 名 称, 在 下 面 的 样 例 程 序 中, 新 文 件 创 建 在 驱 动 器C 的 根 目 录 下。 ---- 第 二 个 参 数 是 指 派 给 文 件 名 称 的 前 缀。 ---- 第 三 个 参 数 应 该 被 设 置 为0, 告 诉 该 函 数 为 文 件 名 称 自 动 产 生 随 机 号 码。 该 随 机 号 码 然 后 被 添 加 到 前 缀 字 符 的 后 面 以 产 生 一 个 独 特 的 和 完 整 的 文 件 名 称。 ---- 第 四 个 参 数 是 一 个 字 符 串 缓 存, 它 至 少 要 有256 个 字 符 的 长 度, 以 存 放 临 时 文 件 的 名 称。 在 调 用 该 函 数 之 后, 新 文 件 创 建 在 指 定 的 磁 盘 上。 这 里 重 申 一 下, 当 退 出 应 用 程 序 时, 必 须 物 理 地 将 该 文 件 从 磁 盘 上 删 除。 样 例 程 序 
    ---- 该 程 序 显 示 了 如 何 在VB 应 用 程 序 中 创 建 一 个 临 时 文 件。 
    ---- 1. 在Visual Basic 中 开 始 一 个 新 的 工 程, 采 用 缺 省 的 方 法 建 立Form1。 
    ---- 2. 将 如 下 声 明 语 句 添 加 到Form1 的 通 用 声 明 部 分 中( 注 意 该 声 明 语 句 需 要 被 书 写 在 一 行 内): ---- Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long ---- 3. 将 如 下 代 码 添 加 到Form1 的Form_Load 事 件 中: Private Sub Form_Load()
    Text1.TEXT = ""
    End Sub
    ---- 4. 在Form1 上 添 加 一 个 文 本 框 控 件, 采 用 缺 省 的 方 法 建 立Text1。 
    ---- 5. 在Form1 上 添 加 一 个 命 令 按 钮 控 件, 采 用 缺 省 的 方 法 建 立Command1。 
    ---- 6. 将 如 下 的 代 码 添 加 到Command1 的 单 击 事 件 中: 
    Private Sub Command1_Click()
    Dim FilePrefix As String
    Dim NewFile As String * 256
    FilePrefix = "TEST"
    NewFile = GetTempName(FilePrefix)
    Text1.TEXT = NewFile
    End Sub---- 7. 创 建 一 个 新 的 名 为GetTempName 的 函 数, 将 如 下 代 码 添 加 到 该 函 数 中: 
    Private Function GetTempName(TmpFilePrefix As String) As String
    Dim TempFileName As String * 256
    Dim X As Long
    Dim DriveName As String
    DriveName = "c:\"
    X = GetTempFileName(DriveName, TmpFilePrefix, 0, TempFileName)
    GetTempName = Left$(TempFileName, InStr(TempFileName, Chr(0)) - 1)
    End Function---- 按 下F5 键, 执 行 样 例 程 序。 单 击 命 令 按 钮, 在 驱 动 器C 的 根 目 录 下 创 建 一 个 新 的 临 时 文 件。 该 新 创 建 的 文 件 的 名 称 被 显 示 在 文 本 框 控 件 中 
      

  2.   

    创建临时文件 在Visual Basic 中 开 发 应 用 程 序 的 时 候, 可 能 会 需 要 在 磁 盘 上 创 建 一 个 临 时 目 录, 本 文 将 介 绍 如 何 在Visual Basic 版 本4.0 中 创 建 临 时 文 件。 使 用GetTempFileName 函 数 
    ---- 可 以 通 过 使 用API 函 数 中 的GetTempFileName 函 数 来 在 一 个 指 定 的 磁 盘 驱 动 器 上 创 建 一 个 新 的 文 件。 尽 管 所 创 建 的 文 件 是 一 个 临 时 的 文 件, 当 不 再 需 要 它 的 时 候, 程 序 员 还 是 需 要 将 它 从 磁 盘 上 物 理 地 删 除 掉。 
    ---- 要 在VB 中 使 用GetTempFileName 函 数, 必 须 将 如 下 的 声 明 语 句 包 含 在 程 序 中( 注 意 该 声 明 语 句 需 要 被 书 写 在 一 行 内): ---- Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long ---- 该GetTempFileName 函 数 需 要4 个 参 数: ---- 第 一 个 参 数 是 希 望 创 建 新 文 件 的 驱 动 器 和/ 或 路 径 的 名 称, 在 下 面 的 样 例 程 序 中, 新 文 件 创 建 在 驱 动 器C 的 根 目 录 下。 ---- 第 二 个 参 数 是 指 派 给 文 件 名 称 的 前 缀。 ---- 第 三 个 参 数 应 该 被 设 置 为0, 告 诉 该 函 数 为 文 件 名 称 自 动 产 生 随 机 号 码。 该 随 机 号 码 然 后 被 添 加 到 前 缀 字 符 的 后 面 以 产 生 一 个 独 特 的 和 完 整 的 文 件 名 称。 ---- 第 四 个 参 数 是 一 个 字 符 串 缓 存, 它 至 少 要 有256 个 字 符 的 长 度, 以 存 放 临 时 文 件 的 名 称。 在 调 用 该 函 数 之 后, 新 文 件 创 建 在 指 定 的 磁 盘 上。 这 里 重 申 一 下, 当 退 出 应 用 程 序 时, 必 须 物 理 地 将 该 文 件 从 磁 盘 上 删 除。 样 例 程 序 
    ---- 该 程 序 显 示 了 如 何 在VB 应 用 程 序 中 创 建 一 个 临 时 文 件。 
    ---- 1. 在Visual Basic 中 开 始 一 个 新 的 工 程, 采 用 缺 省 的 方 法 建 立Form1。 
    ---- 2. 将 如 下 声 明 语 句 添 加 到Form1 的 通 用 声 明 部 分 中( 注 意 该 声 明 语 句 需 要 被 书 写 在 一 行 内): ---- Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long ---- 3. 将 如 下 代 码 添 加 到Form1 的Form_Load 事 件 中: Private Sub Form_Load()
    Text1.TEXT = ""
    End Sub
    ---- 4. 在Form1 上 添 加 一 个 文 本 框 控 件, 采 用 缺 省 的 方 法 建 立Text1。 
    ---- 5. 在Form1 上 添 加 一 个 命 令 按 钮 控 件, 采 用 缺 省 的 方 法 建 立Command1。 
    ---- 6. 将 如 下 的 代 码 添 加 到Command1 的 单 击 事 件 中: 
    Private Sub Command1_Click()
    Dim FilePrefix As String
    Dim NewFile As String * 256
    FilePrefix = "TEST"
    NewFile = GetTempName(FilePrefix)
    Text1.TEXT = NewFile
    End Sub---- 7. 创 建 一 个 新 的 名 为GetTempName 的 函 数, 将 如 下 代 码 添 加 到 该 函 数 中: 
    Private Function GetTempName(TmpFilePrefix As String) As String
    Dim TempFileName As String * 256
    Dim X As Long
    Dim DriveName As String
    DriveName = "c:\"
    X = GetTempFileName(DriveName, TmpFilePrefix, 0, TempFileName)
    GetTempName = Left$(TempFileName, InStr(TempFileName, Chr(0)) - 1)
    End Function---- 按 下F5 键, 执 行 样 例 程 序。 单 击 命 令 按 钮, 在 驱 动 器C 的 根 目 录 下 创 建 一 个 新 的 临 时 文 件。 该 新 创 建 的 文 件 的 名 称 被 显 示 在 文 本 框 控 件 中 
      

  3.   

    好象是生成报表时会产生该文件,一个报表一个。正常关闭VB时会自动删除,出错或其他原因强制退出VB时则不自动删除,但删除也无妨。
    更改为.txt文件时可打开,但看不懂(乱码?)。
    我也不清楚该文件是做什么用的,是来学习的。
      

  4.   

    好像,只有在进行数据报表时才会自动生成一此文件名大概为vb123.TMP的一些临时文件,可我正常关闭时不会自动删除,每次进行测试编译之后,就会自动生成,最后,工程目录下会有好多这样的临时文件,打开又看不懂,安安说的在VB中生成临文件的方法很好,但我不知道创建临时文件之后,怎么调用,怎么写入数据,又怎么与程序合为一体,能否请各位高手谈谈自己的看法及高见,谢谢?
      

  5.   

    我还只发现程序在编译成EXE后,运行时会在temp目录中生成后缀为.tmp的临时文件,你这种情况倒没遇到过,可能是系统有些问题罢了。
      

  6.   

    大家知道,可通过VB读写文件,当向指定路径的一个文件写数据时,如果该文件不存在则VB创建该文件并写入数据。倘若指定的文件名为:AAA.tmp,请问该文件与通过API函数GetTempFileName创建的*.tmp文件有何不同?
      

  7.   

    我还只发现程序在编译成EXE后,运行时会在temp目录中生成后缀为.tmp的临时文件, 也许是
    为了突然死机后保存文件的副本吧
      

  8.   

    你指定的temp文件和GetTempFileName创建的temp文件没有什么两样,不同的是你指定的temp文件名可能会和已有的.tmp文件重名,
    但GetTempFileName返回的文件名是不会重名的!另外.tmp只是表示你想使该文件是临时文件,应该使用CreateFile的一个叫什么xxxtempxx的参数来创建使用,
    至于想写入什么数据,由你看着办,写文本也好,写二进制也好,都无所谓,因为它就是一个普通的文件罢了。
    如何操作“安安”已经给出详细代码了。
      

  9.   

    请问各位高手,VB在什么样的情况下自动创建临时文件或临时目录,假如我编译成EXE文件之后,
    VB会不会在目录下自动创建临时文件,而不是人工创建。