Har följande funktion i ett program, när den körs så klagar VB på "Open sCurrentFile For Output As iFile" och säger "Bad file name or number". Jag har ingen aning varför så jag söker er hjälp. Djä... missmatch Dom är public för att killen som hjälpte mig skriva funktionen skrev dom så, och han håller vanligtvis på med PHP och inte VB. Det verkar vara en djä... soppa. När jag kör med den senaste koden så får jag inget felmeddelande men den skriver ingenting alls till filen. Men snälla , det finns ingen "idiot" #1 Mitt huvud fungerar inte som det borde, på grund av sjukdom bland annat, men jag förstår tyvärr inte alls vad du menar :/. Du får modifiera så att det som ska skrivas i filen kommer dit, nu skrivs bara lite testdata. Tycker det ser jättekonstigt ut att göra Line Input #1 när man Öppnat FileNr Tack så mycket Thomas, det fungerade perfekt! Oops... ja visst är det konstigt att göra så. Jag skrev #1 först och kom sen på att det kanske var vettigare att använda FileNr, men jag ändrade tydligen inte på alla ställen. Braaa...... än en gång har Vi lyckats ! Det han vill göra är att lägga till gammalfil.txt till nyfil.txt och i det här fallet är det onödigt att använda append. Men det är fortfarande en typ av append, fast "manuell".Felmeddelande vid append-funktion.
<code>
Public Sub WriteSignature(iFile As Integer, iSignature As Integer)
Dim sText As String
Do Until EOF(iSignature)
Input #iSignature, sText
Write #iFile, sText
Loop
End Sub
Public Sub Test()
Dim iFile As Integer, iSignature As Integer
Dim sCurrentFile As String
Dim sSignature As String
sCurrentFile = File1.Path & "\15-" & FixedFileName & ".txt"
sSignature = App.Path & "\addinfo.txt"
Open sCurrentFile For Output As iFile
Open sSignature For Input As iSignature
WriteSignature iFile, iSignature
Close iFile
Close iSignature
End Sub
</code>
Följande kod är det som kallar funktionen
<code>
Print #1, " "
Print #1, " info :"
Print #1, " "
Test
Close #1
</code>
Det är dock så att filen skapas men det från addinfo.txt läggs inte in i slutet av filen.Sv: Felmeddelande vid append-funktion.
Så här skall det vara i princip !
<code>
Public Sub Test()
Dim iFile As Long, iSignature As Long
Dim sCurrentFile As String
Dim sSignature As String
sCurrentFile = File1.Path & "\15-" & FixedFileName & ".txt"
sSignature = App.Path & "\addinfo.txt"
iFile = FreeFile
Open sCurrentFile For Output As iFile
iSignature = FreeFile
Open sSignature For Input As iSignature
Do Until EOF(iSignature)
Input #iSignature, sText
Print #iFile, sText
Loop
Close #iFile
Close #iSignature
</code>
Sluta använda Integer i VB !
Sen ser jag ju inte hela sammanhanget Men ! Varför är dom Public ?Sv:Felmeddelande vid append-funktion.
Fick "File already open" på "Open sCurrentFile For Output As iFile".Sv: Felmeddelande vid append-funktion.
När man inte ser hela sammanhanget så är det svårt att analyser Men
så här kan du göra som test.
<code>
Public Sub Test()
Dim iFile As Long, iSignature As Long
Dim sCurrentFile As String
Dim sSignature As String
sCurrentFile = File1.Path & "\15-" & FixedFileName & ".txt"
sSignature = App.Path & "\addinfo.txt"
Close
iFile = FreeFile
Open sCurrentFile For Output As iFile
iSignature = FreeFile
Open sSignature For Input As iSignature
</code>
Dvs jag har lagt till ett <b>Close</b> innan jag öppnar dom igen
Kolla i resten av coden vem/var filen/filerna öppnas och inte stängs.
Du får skicka hela coden till mig om jag skall se hur det är tänkt.
<b>svenpon@telia.com</b>
Jag tycker det är kul att rota i dålig kod så jag hjälper dig gärna.Sv:Felmeddelande vid append-funktion.
Jag har inte mer kod annat än det jag visat.
<code>
Open FileName For Output As #1
Print #1, " "
Print #1, " genre : " & cboGenre
Print #1, " type : " & cboType
Print #1, " lang : " & cboLang
Print #1, " size : " & TotalFileSize
Print #1, " "
Print #1, " info :"
Print #1, " "
Test
Close #1
</code>Sv: Felmeddelande vid append-funktion.
Det finns FreeFile och det du döpt dom till.
Byt ut "idiotens" #1 mot det namn du givetSv:Felmeddelande vid append-funktion.
Sv: Felmeddelande vid append-funktion.
<code>
Dim FileNr As Long, Signatur As String, tempLine As String
'Läs in signaturen
FileNr = FreeFile
Open App.Path & "\signatur.txt" For Input As #FileNr
Do Until EOF(FileNr)
Line Input #1, tempLine
Signatur = Signatur & tempLine & vbCrLf
Loop
Close #FileNr
Signatur = Left(Signatur, Len(Signatur) -2)
'Skapa en fil med valfridata
FileNr = FreeFile
Open App.Path & "\nyfil.txt" For Output As #FileNr
'Spara datan
Print #FileNr, "DATA DATA DATA DATA"
Print #FileNr, "DATA DATA DATA DATA"
Print #FileNr, "DATA DATA DATA DATA"
'Lägg till signaturen
Print #FileNr, Signatur
Close #FileNr
</code>
ThomasSv:Felmeddelande vid append-funktion.
<code>
Open App.Path & "\signatur.txt" For Input As #FileNr
Do Until EOF(FileNr)
Line Input #1, tempLine
Signatur = Signatur & tempLine & vbCrLf
Loop
Close #FileNr
</code>Sv:Felmeddelande vid append-funktion.
(Fast jag fick dimma FileNr, tempLine och Signatur :))Sv: Felmeddelande vid append-funktion.
<code>
Line Input #1, tempLine
</code>
ska ändras till
<code>
Line Input #FileNr, tempLine
</code>
ThomasSv:Felmeddelande vid append-funktion.
Sensmoral till alla VB vänner. Använd ALDRIG #1 som filNr. Använd FreeFile.
Sen har jag en liten fundering till. Du skriver i rubriken Append (lägg till) då borde det vara
<code>
Open App.Path & "\nyfil.txt" For Append As #FileNr
</code>Sv: Felmeddelande vid append-funktion.
Thomas