Avatar billede twister10 Nybegynder
27. november 2000 - 18:32 Der er 17 kommentarer og
1 løsning

Ændring/Append til en fil ?!?

Hejsa !

Jeg er lidt nybegynder i Visua Basic hvad filer angår, hvordan skriver jeg til en fil og således rygger en linie ned efter det øsnked er puttet ind, uden at den overkriver det foregående, men hopper en linie ned ???

Et eksempel som her overskriove det gamle, DET MÅ DEN IKKE :-)

----

If ((filesave = 1) And (fileok = 1)) Then
Dim filnavn As Integer
filnavn = FreeFile
Open cdbLogfile.FileName For Output As #filnavn
\' Close before reopening in another mode.
Print #filnavn, buffer & Chr(13)
Close #filnavn
filesave = 0
End If
Avatar billede tdaugaard Nybegynder
27. november 2000 - 18:36 #1
Append is your friend!

Men, den tilføjer i slutningen af filen..

If ((filesave = 1) And (fileok = 1)) Then
Dim filnavn As Integer
filnavn = FreeFile
Open cdbLogfile.FileName For Append As #filnavn
\' Close before reopening in another mode.
Print #filnavn, buffer & Chr(13)
Close #filnavn
filesave = 0
End If
Avatar billede tdaugaard Nybegynder
27. november 2000 - 18:40 #2
Brug flg. kode hvis du vil have linien i toppen (den nye)

    strFile = \"c:\\test.txt\"

    \' Checker om filen eksisterer
    If Dir$(strFile) > \"\" Then
        Open strFile For Input As #1
            strContent = Input$(LOF(1), 1)
        Close #1
    End If
   
    Open strFile For Output As #1
        Print #1, \"En ny linie!\"
        Print #1, strContent
    Close #1
Avatar billede twister10 Nybegynder
27. november 2000 - 18:45 #3
tdaugaard >>

Tak for dit hurtige svar :-)

Men denne :

Open cdbLogfile.FileName For Append As #filnavn

Gør stadig det samme..

Og jeg vil have den til at append\'de i bunden af filen :-)

Ang. ovenstående, jeg har pastet det hele ind, men alligevel laver den filen, MNE overskriver alle andre, så når jeg kigger derind så står der kun een linie, hvor den skulle have lavet 10 :-)

Ved du hvad der er galt ?

Avatar billede twister10 Nybegynder
27. november 2000 - 18:45 #4
Gør det noget at jeg kører linen :

Open cdbLogfile.FileName For Append As #filnavn

HVEr gang jeg vil skrive til filen, eller må den kun køres een gang ?

Avatar billede twister10 Nybegynder
27. november 2000 - 18:46 #5
Hvis du har en smartere som denne :

strFile = \"c:\\test.txt\"

    \' Checker om filen eksisterer
    If Dir$(strFile) > \"\" Then
        Open strFile For Input As #1
            strContent = Input$(LOF(1), 1)
        Close #1
    End If
   
    Open strFile For Output As #1
        Print #1, \"En ny linie!\"
        Print #1, strContent
    Close #1


Så vil jeg gerne have et eksempel hvor den add\'er i bunden :-)\'

bare det virker !
Avatar billede tdaugaard Nybegynder
27. november 2000 - 18:51 #6
Append SKRIVER i enden af filen ..

Open cdbLogfile.FileName For Append As #filnavn
Avatar billede twister10 Nybegynder
27. november 2000 - 18:51 #7
Lige lidt mere info !

Det jeg gerne vilel kunne, er at køre programsumpen 10 gange, hvorefter den i den pågældende fil skal have 10 liner med det der står i stringen BUFFE, som osse aflæses andetsteds i programmet de 10 gange !
Avatar billede twister10 Nybegynder
27. november 2000 - 18:52 #8
>>Append SKRIVER i enden af filen ..

Ok men hvorfor sletter den så det der står der i forvejen ??

Avatar billede tdaugaard Nybegynder
27. november 2000 - 18:53 #9
Det burde den heller ikke

prøv at sende mig dit projekt så skal jeg nok lige kigge på det.
Avatar billede tdaugaard Nybegynder
27. november 2000 - 18:55 #10
e@tdaugaard.dk
Avatar billede twister10 Nybegynder
27. november 2000 - 18:56 #11
Okay :-)

her kommer selve timerfunktionen som laver det hele, BUFFER ændrer sig hver gang en måling er foretaget fra et måleinstrument via comporten på skærmen...

Private Sub Timer1_Timer()

If ((filesave = 1) And (fileok = 1)) Then
Dim filnavn As Integer
filnavn = FreeFile
Open cdbLogfile.FileName For Append As #filnavn
\' Close before reopening in another mode.
Print #filnavn, buffer
Close #filnavn
filesave = 0
End If



curve = Val(txt_metervalue.Text)
If (sample = 10) Then
sample = 0
End If

lbl_smplnumber.Caption = sample + 1


If beat = 0 Then
pic_beat.Visible = True
beat = 1
Else
pic_beat.Visible = False
beat = 0
End If

If Not (slftst = 1) Then

If ((aflaes = 1) And Not (oncomm = 1)) Then
  measnr = 1 + measnr
     
  If ((measnr = 1) And Not (display = 0)) Then
    MSComm.Output = \"DISP:TEXT \"\"1 READING 1\"\"\" & Chr(10)
  End If
 
  If ((measnr = 2) And Not (display = 0)) Then
    MSComm.Output = \"DISP:TEXT \"\"/ READING /\"\"\" & Chr(10)
  End If
 
  If ((measnr = 3) And Not (display = 0)) Then
    MSComm.Output = \"DISP:TEXT \"\"- READING -\"\"\" & Chr(10)
  End If
 
  If ((measnr = 4) And Not (display = 0)) Then
    MSComm.Output = \"DISP:TEXT \"\"\\ READING \\\"\"\" & Chr(10)
    measnr = 0
  End If
   
    If (oncomm = 0) Then
      MSComm.Output = opgave & Chr(10)
    End If
   
   
   
  If (aflaes = 1) Then
    If (Mid(buffer, 12, 4) = \"E+37\") Then
      txt_metervalue.Alignment = 2
      txt_metervalue.Text = \"OPEN\"
      txt_eksp.Visible = False
    Else
      txt_metervalue.Alignment = 0
      txt_metervalue.Text = Mid(buffer, 1, 7)
      txt_eksp.Visible = True
     
      End If
   
    sample = sample + 1
   
    If ((combo_graph.ListIndex >= 0) And (grpref = 0)) Then
    MSChart1.Visible = True
    With MSChart1
    arrSamples(sample) = curve
    .charttype = charttype
    .RowCount = 10
    .Row = sample
    arrSamples(sample) = curve
    .ChartData = arrSamples
    End With
    txt_eksp = Mid(buffer, 12, 4)
    End If
    End If
 
 
  Else
  stdbynr = stdbynr + 1
  If ((stdbynr = 1) And Not (display = 0)) Then
  MSComm.Output = \"DISP:TEXT \"\"* STANDBY  \"\"\" & Chr(10)
  End If
  If ((stdbynr = 2) And Not (display = 0)) Then
  MSComm.Output = \"DISP:TEXT \"\"  STANDBY *\"\"\" & Chr(10)
  stdbynr = 0
  End If
End If


  If ((aflaes = 0) And Not (oncomm = 1)) Then
  MSComm.Output = \"ROUT:TERM?\" & Chr(10)
  If ((Mid(terminals, 1, 4)) = \"FRON\") Then
    pic_termon.Visible = True
    pic_termoff.Visible = False
  End If
  If ((Mid(terminals, 1, 4)) = \"REAR\") Then
    pic_termoff.Visible = True
    pic_termon.Visible = False
  End If
End If

  \'Funktionen her checkker om der er forbindelse til multimetret

\'If ((terminals = \"\") And Not (oncomm = 1)) Then
  \' error = error + 1
  \' If error = 3 Then
  \'  intResponse = MsgBox(\"CONNECTION LOST TO DEVICE : HP34401A ! Check cables and try starting the program again\", vbOKOnly + vbExclamation, \"Connection lost !!!\")
  \'  End
  \' End If
\' End If

buffer = \"\"
terminals = \"\"
End If

If slftst = 1 Then
  txt_metervalue = \"\"
  slftstnr = slftstnr + 1
  If slftstnr = 1 Then
    lbl_slftst.Visible = True
  End If
  If slftstnr = 2 Then
    lbl_slftst.Visible = False
    slftstnr = 0
  End If
If (Mid(slftststatus, 2, 1) = 0) Then
  lbl_slftst.Visible = False
  intResponse = MsgBox(\"SELF-TEST ended with no failures !\", vbOKOnly + vbInfo, \"Self-test complete !\")
  slftst = 0
  slftststatus = \"\"
  cmd_slftst.Enabled = True
  cmd_online.Enabled = True
  cmd_display.Enabled = True
  combo_meastype.Enabled = True
End If

End If
lbl_smplint.Caption = Timer1.Interval & \" mSec.\"


If (combo_meastype.ListIndex = -1) Or slftst Then
  cmd_online.Enabled = False
Else
  cmd_online.Enabled = True
End If

End Sub
Avatar billede twister10 Nybegynder
27. november 2000 - 19:05 #12
jeg har fundet fejlen, jeg kommer til at nulstille filesave i slutnignen men glemmer at set\'e det igen :-)

SORRY !
Avatar billede tdaugaard Nybegynder
27. november 2000 - 19:09 #13
*GG* Den slags fejl har vi alle sammen været ude for :)
Det er helt OK.
Avatar billede twister10 Nybegynder
27. november 2000 - 19:13 #14
HIHI, pinligt, nå men jeg er ret ny i VB så mit prg. er osse ganke roddet :-)

Men din løsning var ihvertfald rigtig fra starten, så du skal have dine point og MANGE TAK FOR HJÆLPEN :-)

Mvh. Martin
Avatar billede tdaugaard Nybegynder
27. november 2000 - 19:17 #15
*S* Det var så lidt :)
Avatar billede twister10 Nybegynder
27. november 2000 - 19:47 #16
Okay :-)

Har du læst mit nyeste spg. omkring ændring af array ??

hvis JA kan du hjælpe ?
Avatar billede tdaugaard Nybegynder
27. november 2000 - 19:48 #17
Har svaret :)
Avatar billede twister10 Nybegynder
27. november 2000 - 19:52 #18
Så jeg tak :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester