请问高手,在PB下如何对文本文件(.txt)进行读写?谢谢!

时间:2021-10-25 17:40:29
请问高手,在PB下如何对文本文件(.txt)进行读写?谢谢!

13 个解决方案

#1


用fileopen filewrite等相关文件操作函数。

#2


filewrite
fileread
fileopen
fileclose

#3


你看一下pb的帮助应该理解的更深一些。
你查File Function就可以查所有的文件操作函数。

#4



/**********************************************************/
//Function                 : 读文件
//parm                     :
//         1. as_filename  : 要打开的文件
//         2. as_save[]    : 要存储文件内容的数组
//         3. ai_type      : 打开文件的方式(流模式或行模式)
//         4. ai_startrow  : 行模式时指定读起始行
//comment                  : ai_type = 1 是流模式(默认) =2 是行模式
//return                   :  -1 is fail or 1 is success
//Author                   : hzh
//date                     : 2002.06.02
/**********************************************************/

int i_fh,i_cnt,i_sum,i_row
long l_file_length,l_ret
string s_temp

//文件不存在
IF NOT FileExists(as_filename) THEN RETURN -1

//打开文件
IF ai_type  = 2 THEN 
i_fh = FileOpen(as_filename,LineMode!,Read!,lockread!)
l_file_length = 0
ELSE
//默认流式
l_file_length = FileLength(as_filename)
i_fh = FileOpen(as_filename,StreamMode!,Read!,lockRead!)
END IF

IF i_fh <0 THEN 
FileClose(i_fh)
RETURN -1
END IF

CHOOSE CASE l_file_length
CASE 0
//行模式读文件
l_ret = FileRead(i_fh,s_temp)
i_cnt = 1
i_row = 1
DO WHILE l_ret <> -100
IF i_row>=ai_startrow THEN as_save[i_cnt] = s_temp
l_ret = FileRead(i_fh,s_temp)
i_cnt ++
i_row ++
LOOP
CASE 1 TO 32374
//流模式读文件
l_ret = FileRead(i_fh,as_save[1])
IF l_ret < 0 THEN
FileClose(i_fh)
    RETURN -1
END IF
CASE ELSE
//流模式循环读文件
i_sum = Int (l_file_length/32375) + 1
FOR i_cnt = 1 TO i_sum
     FileRead(i_fh,as_save[i_cnt])
      IF l_ret < 0 THEN EXIT
  NEXT
END CHOOSE

FileClose(i_fh)
RETURN 1

#5



/**********************************************************/
//Function                 : 写文件
//parm                     :
//         1. as_filename  : 要打开用于写的文件
//         2. as_save[]    : 要存储文件内容的数组
//         3. ai_type      : 打开文件的方式(流模式或行模式)
//         4. ai_startrow  : 行模式时指定写的起始行,插入
//comment                  : ai_type = 1 是流模式(默认) = 2 是行模式
//return                   :  -1 is fail or 1 is success
//Author                   : hzh
//date                     : 2002.06.02
/**********************************************************/

int i_fh,i_cnt,i_sum
long l_file_length,l_ret
string s_temp


//打开文件
IF ai_type  = 2 THEN 
i_fh = FileOpen(as_filename,LineMode!,write!,LockWrite!,Append!)
l_file_length = 0
ELSE
//默认流式
l_file_length = FileLength(as_filename)
i_fh = FileOpen(as_filename,StreamMode!,write!,LockWrite!,Append!)
END IF

IF i_fh <0 THEN 
FileClose(i_fh)
RETURN -1
END IF

i_sum = UpperBound(as_save)
IF i_sum<1 THEN RETURN -1

CHOOSE CASE ai_type
CASE 1
//流模式写文件
FOR i_cnt = 1  TO i_sum
FileWrite(i_fh,as_save[i_cnt])
NEXT
CASE 2
//行模式写文件
FOR i_cnt = 1  TO i_sum
FileWrite(i_fh,as_save[i_cnt])
   NEXT
CASE ELSE
MessageBox('打开文件模式出错','没有这种文件模式,请与程序供应商联系 !')
END CHOOSE

FileClose(i_fh)
RETURN 1

#6




自己慢慢看吧,相信可以解决你的大部分文件读写问题

#7




//         2. as_save[]    : 要存储文件内容的数组,要求按地址传送

#8


:)
还有个很简单的ProfileString

#9


同各位前辈

#10


www.yeqiufeng.net

我写过一个记事本……用PB651写的

#11


好家伙,都让上面这些家伙说完了。笑...

#12


只能顶了!!!狂顶!!!!!!!!!!!!!!!!!!!!!!!!

#13


简单问题人气特别高,楼主快点结贴吧

#1


用fileopen filewrite等相关文件操作函数。

#2


filewrite
fileread
fileopen
fileclose

#3


你看一下pb的帮助应该理解的更深一些。
你查File Function就可以查所有的文件操作函数。

#4



/**********************************************************/
//Function                 : 读文件
//parm                     :
//         1. as_filename  : 要打开的文件
//         2. as_save[]    : 要存储文件内容的数组
//         3. ai_type      : 打开文件的方式(流模式或行模式)
//         4. ai_startrow  : 行模式时指定读起始行
//comment                  : ai_type = 1 是流模式(默认) =2 是行模式
//return                   :  -1 is fail or 1 is success
//Author                   : hzh
//date                     : 2002.06.02
/**********************************************************/

int i_fh,i_cnt,i_sum,i_row
long l_file_length,l_ret
string s_temp

//文件不存在
IF NOT FileExists(as_filename) THEN RETURN -1

//打开文件
IF ai_type  = 2 THEN 
i_fh = FileOpen(as_filename,LineMode!,Read!,lockread!)
l_file_length = 0
ELSE
//默认流式
l_file_length = FileLength(as_filename)
i_fh = FileOpen(as_filename,StreamMode!,Read!,lockRead!)
END IF

IF i_fh <0 THEN 
FileClose(i_fh)
RETURN -1
END IF

CHOOSE CASE l_file_length
CASE 0
//行模式读文件
l_ret = FileRead(i_fh,s_temp)
i_cnt = 1
i_row = 1
DO WHILE l_ret <> -100
IF i_row>=ai_startrow THEN as_save[i_cnt] = s_temp
l_ret = FileRead(i_fh,s_temp)
i_cnt ++
i_row ++
LOOP
CASE 1 TO 32374
//流模式读文件
l_ret = FileRead(i_fh,as_save[1])
IF l_ret < 0 THEN
FileClose(i_fh)
    RETURN -1
END IF
CASE ELSE
//流模式循环读文件
i_sum = Int (l_file_length/32375) + 1
FOR i_cnt = 1 TO i_sum
     FileRead(i_fh,as_save[i_cnt])
      IF l_ret < 0 THEN EXIT
  NEXT
END CHOOSE

FileClose(i_fh)
RETURN 1

#5



/**********************************************************/
//Function                 : 写文件
//parm                     :
//         1. as_filename  : 要打开用于写的文件
//         2. as_save[]    : 要存储文件内容的数组
//         3. ai_type      : 打开文件的方式(流模式或行模式)
//         4. ai_startrow  : 行模式时指定写的起始行,插入
//comment                  : ai_type = 1 是流模式(默认) = 2 是行模式
//return                   :  -1 is fail or 1 is success
//Author                   : hzh
//date                     : 2002.06.02
/**********************************************************/

int i_fh,i_cnt,i_sum
long l_file_length,l_ret
string s_temp


//打开文件
IF ai_type  = 2 THEN 
i_fh = FileOpen(as_filename,LineMode!,write!,LockWrite!,Append!)
l_file_length = 0
ELSE
//默认流式
l_file_length = FileLength(as_filename)
i_fh = FileOpen(as_filename,StreamMode!,write!,LockWrite!,Append!)
END IF

IF i_fh <0 THEN 
FileClose(i_fh)
RETURN -1
END IF

i_sum = UpperBound(as_save)
IF i_sum<1 THEN RETURN -1

CHOOSE CASE ai_type
CASE 1
//流模式写文件
FOR i_cnt = 1  TO i_sum
FileWrite(i_fh,as_save[i_cnt])
NEXT
CASE 2
//行模式写文件
FOR i_cnt = 1  TO i_sum
FileWrite(i_fh,as_save[i_cnt])
   NEXT
CASE ELSE
MessageBox('打开文件模式出错','没有这种文件模式,请与程序供应商联系 !')
END CHOOSE

FileClose(i_fh)
RETURN 1

#6




自己慢慢看吧,相信可以解决你的大部分文件读写问题

#7




//         2. as_save[]    : 要存储文件内容的数组,要求按地址传送

#8


:)
还有个很简单的ProfileString

#9


同各位前辈

#10


www.yeqiufeng.net

我写过一个记事本……用PB651写的

#11


好家伙,都让上面这些家伙说完了。笑...

#12


只能顶了!!!狂顶!!!!!!!!!!!!!!!!!!!!!!!!

#13


简单问题人气特别高,楼主快点结贴吧