回 帖 发 新 帖 刷新版面

主题:QB中如何使用READ读另一个文件中的DATA数据,急!!!

QB中如何使用READ读另一个文件中的DATA数据,急!!!
请各位高手指教……

回复列表 (共13个回复)

沙发

用File=>Merge合并
是QB4.5还得Option=>Full Menu为选中

板凳

我的主程序是EXE文件,还有什么办法吗?

3 楼

修改EXE中的DATA库(请慎重小心操作)

4 楼

还有没有更好的办法,
其实我主要是这个意思,数据从另一个文件输入,然后让程序在运行时自动读取这个文件中的数据,源程序用的是READ,因为数据太多,其它方法都不是很好!请MOZ帮忙!感谢了!

5 楼

源程序还可以更改吗?

我已经很久很久没有用过read,data这种读数据的方式了
因为我不喜欢这种方式,更改数据不方便,

现在的系统中
读数据的话用文件方式也不会太慢的

如果你这个程序是EXE且没有源文件的话而且非得要用read data这种方式的话,
很遗憾,请恕我帮不上忙.

6 楼

源程序可以改,用什么方式好些呢?

7 楼

读文件

1. 如果每个数据都是同样类型的
   用随机文件方式 open f$ for random as #1 len=...
   get #1,,a&
   除单类型数据外,还可以用自定义的数据结构体type

2. 如果数据类型不同,而且需要有一定的顺序的话,
   用顺序文件方式 open f$ for input as #1
   input #1,a,b,c,d$
   文件内容: 3,25,59,"编程爱好者",59

3. 还可以自己定义文件中的标记
   比如说ABC带头的字符代表什么之类的
   想怎样用就怎样用,自由度极大
   
根据你自己要求和方便,用多了自然能随心所欲

8 楼

101  DATA 3,12,15,6,9
102  DATA 1, 7.71, "WA"
103  DATA 2, 3.43, "WA"
104  DATA 3, 5.12, "VA"
105  DATA 1, 4, 0.0202
106  DATA 2, 5, 0.0477
107  DATA 3, 12, 0.0192
108  DATA 4, 5, 0.0202
109  DATA 5, 6, 0.0766
110  DATA 6, 8, -0.0225
111  DATA 7, 8, 0.13
112  DATA 8, 9, 0.0712
113  DATA 9, 10, -0.0213
114  DATA 10, 11, 0.0264
115  DATA 11, 12, 0.06
116  DATA 0, 1, 0.026
117  DATA 0, 2, 0.089
118  DATA 0, 3, 0.026
119  DATA 0, 8, 1.174
120  DATA 0, 4, 0.0202
121  DATA 4, 5, 0.0202
122  DATA 5, 6, 0.227
123  DATA 6, 8, -0.0225
124  DATA 0,8,2.325
125  DATA 0,8,.26
126  DATA 8,9,.224
127  DATA 9,10,-.0213
128  DATA 0,10,.0725

1002 REM DATA INPUT
1004 DIM S1(5)
1006 FOR I = 1 TO 5: READ S1(I): NEXT I
1008 LET G0 = S1(1)
1010 LET N1 = S1(2)
1012 LET L1 = S1(3)
1014 LET N0 = S1(4)
1016 LET L0 = S1(5)
1022 DIM G1(G0, 3), D$(2), C$(3), X(80), Y(80)
1023 DIM Z1(N1), Z2(N1), Z0(N1)
1024 FOR I = 1 TO G0
1026 READ G2, G3, D$
1028 LET G1(I, 1) = G2
1030 LET G1(I, 2) = G3
1032 LET G1(I, 3) = 1
1034 IF D$ = "VA" THEN LET G1(I, 3) = 2
1036 IF D$ = "WA" THEN LET G1(I, 3) = 3
1038 NEXT I
1040 DIM X1(L1, 3)
1042 FOR I = 1 TO L1: FOR J = 1 TO 3: READ X1(I, J): NEXT J: NEXT I
1044 IF L0 = 0 THEN GOTO 1060
1046 DIM X0(L0, 3)
1048 FOR I = 1 TO L0: FOR J = 1 TO 3: READ X0(I, J): NEXT J: NEXT I
1060 REM OPTIMIZATION OF NODE NURBER
1062 DIM A1(N1), A2(N1)
1064 FOR I = 1 TO N1: A1(I) = 0: NEXT I
1066 LET L4 = 0
1068 FOR K = 1 TO L1
1070 LET J1 = X1(K, 1)
1072 LET J2 = X1(K, 2)
1074 IF J1 <> 0 THEN IF J2 <> 0 THEN GOTO 1078
1076 GOTO 1084
1078 LET A1(J1) = A1(J1) + 1
1080 LET A1(J2) = A1(J2) + 1
1082 LET L4 = L4 + 1
1084 NEXT K
1086 LET L = 1
1088 LET T = 1
1090 FOR I = 1 TO N1
1092 LET A2(I) = I
1094 NEXT I
1096 IF T > N1 THEN GOTO 1114
1098 FOR I = 1 TO N1
1100 IF A1(I) = L THEN GOTO 1104
1102 GOTO 1108
1104 LET A2(T) = I
1106 LET T = T + 1
1108 NEXT I
1110 LET L = L + 1
兄弟,我的源程序一部分就是这个样子,想把101至128放入另一个文件,怎么实现请给个详细的方法,拜托!

9 楼

看得很辛苦
我不知道你的后续程序用的是什么变量
单从你的程序表面上看,浪费了很多.

改的办法很简单,最简单的一种:

第1步. 把你的DATA后面的数据单独用一个文本文件存放:
       数据间用逗号分隔,不要DATA和行号那些东西
       1.DAT
       ------------------------------
       3,12,15,6,9, 1, 7.71, "WA", 2, 3.43, "WA", 3, 5.12, "VA" ..........

第2步. 在文件首加一句open "1.dat"for input as #1

第3步. 把那些read 改成 input #1,

10 楼

实在是忍不住要下手开刀.


文件1.dat的内容如下:
-----------------------------
3,12,15,6,9,1, 7.71, "WA", 2, 3.43, "WA", 3, 5.12, "VA", 1, 4, 0.0202
2, 5, 0.0477,3, 12, 0.0192, 4, 5, 0.0202, 5, 6, 0.0766, 6, 8, -0.0225
7, 8, 0.13, 8, 9, 0.0712, 9, 10, -0.0213, 10, 11, 0.0264, 11, 12, 0.06
0, 1, 0.026, 0, 2, 0.089, 0, 3, 0.026,0, 8, 1.174, 0, 4, 0.0202
4, 5, 0.0202, 5, 6, 0.227, 6, 8, -0.0225, 0,8,2.325, 0,8,.26, 8,9,.224
9,10,-.0213, 0,10,.0725
---------------------------------

BAS源程序改后如下:
---------------------------------
open "1.dat" for input as #1
input #1,Go,N1,L1,No,Lo

DIM G1(G0, 3), D$(2), C$(3), X(80), Y(80),Z1(N1), Z2(N1), Z0(N1)

FOR I = 1 TO G0
  input #1, G1(I,1), G1(I,2), D$
  G1(I, 3) = 1
  IF D$ = "VA" THEN LET G1(I, 3) = 2
  IF D$ = "WA" THEN LET G1(I, 3) = 3
NEXT I

DIM X1(L1, 3)
FOR I = 1 TO L1
  FOR J = 1 TO 3
    input #1,X1(I, J)
NEXT J,I

IF L0 THEN   '[color=FF00FF]这一句我觉得可以省略[/color]
  DIM X0(L0, 3)
  FOR I = 1 TO L0
    FOR J = 1 TO 3
      input #1, X0(I, J)
NEXT J, I
end if

'OPTIMIZATION OF NODE NURBER

DIM A1(N1), A2(N1)
L4 = 0
FOR K = 1 TO L1
  IF X1(k,1) <> 0 and X1(K,2) <> 0 THEN
    A1(X1(k,1)) = A1(X1(k,1)) + 1
    A1(X1(k,2)) = A1(X1(k,2)) + 1
    L4 = L4 + 1
  end if
NEXT K

L = 1
T = 1
FOR I = 1 TO N1
  A2(I) = I
NEXT I

IF T <= N1 THEN   '[color=FF00FF]这一句我很怀疑是放错了地方[/color]
  FOR I = 1 TO N1
   IF A1(I) = L THEN
     A2(T) = I
     T = T + 1    '[color=FF00FF]应该在这一句下面加if T>N1 then exit for [/color]
   end if
  NEXT I
end if

L = L + 1

我来回复

您尚未登录,请登录后再回复。点此登录或注册