Hej hej. Hej, nu har jag kollat lite o förstår inte riktigt, ligger dom sida vid sida i txt-filen? konstigt nog så gör dom inte det, utan den skriver ut allt i comboboxen på samma sätt som det står i txt filen. <code> när jag använder append så kan den inte läsa av text filen, det blir tomt i combobox. det är ingen som orkar ta emot programmet så långt som jag har kommit med det och kolla på det? Hej Kan hålla med Sven där, ändra msgboxen lite. Hej >Ok, motivera din kommentar så jag vet varför:-) aha, jag har uppdaterat mina funktioner nu så jag kör från o me nu på detta sätt:) tack för tipset. >MsgBox ("Som systemadministratör så borde du veta hur man sköter detta vanliga loginprogram, men tydligen inte.") Hej igen BOOYA .. en fis i kyrkan är väl alltid rolig.VB6 problem.. HJÄLP!!
Jag har några problem med ett program som jag håller på med, och skulle va väldigt tacksam om någon kunde hjälpa mig, då jag har hållt på med det i 3 dagar(dygn)..
jag är väldigt nybörjare så det är lite krångligt.. i alla fall läs längre ner på sidan för mer info.
det är säkert en del till problem eller något som kan göras smidigare eller något. men så här har jag löst det hittils, om det är någon som vill ha det okompilerade programmet för test så får dom givetvis det.
blir evigt tacksam för all hjälp som jag kan få.
Option Explicit
Dim sFörnamn As String
Dim sEfternamn As String
Dim slogin As String
Dim sLösenord As String
Dim Antal As Integer
Dim filnr As Integer
Dim post As Integer
Dim FilNamn As String
Dim sFilNamn As String
Private Sub Form_Load()
Dim namn As String
On Error GoTo starterr
Open App.Path & "\data\sök.txt" For Input As #1
Do Until EOF(1)
Input #1, namn
Combo1.AddItem namn
Loop
Close #1
starterr:
form_load1
form_load2
End Sub
Private Sub form_load1()
Dim obj
Dim Postlängd As Integer
On Error GoTo errorh
Postlängd = Len(Konton)
filnr = FreeFile
FilNamn = App.Path & "\data\konton.txt"
Open FilNamn For Random As filnr Len = Postlängd
post = 1
Antal = FileLen(FilNamn) / Postlängd
errorh:
On Error GoTo errorhh
MkDir (App.Path & "\data")
Form_Load
Exit Sub
errorhh:
Exit Sub
On Error GoTo errhandler1
Set obj = CreateObject("Scripting.FileSystemObject")
obj.createtextfile App.Path & "\data\konton.txt"
errhandler1:
Exit Sub
End Sub
Private Sub form_load2()
Dim obj
Dim sPostlängd As Integer
sPostlängd = Len(Konton.login)
sFilNr.sFilNr = FreeFile
sFilNamn = App.Path & "\data\sök.txt"
Open sFilNamn For Random As sFilNr.sFilNr Len = sPostlängd
sPost.sPost = 1
sAntal.sAntal = FileLen(sFilNamn) / sPostlängd
On Error GoTo errhandler2
Set obj = CreateObject("Scripting.FileSystemObject")
obj.createtextfile App.Path & "\data\sök.txt"
errhandler2:
Exit Sub
End Sub
Private Sub mnuÄndra_Click()
Bytlösen.Show
End Sub
Private Sub mnuAvsluta_Click()
Close filnr
Close sFilNr.sFilNr
Unload Me
End
End Sub
Private Sub mnuSök_Click()
frmSök.Show
End Sub
Private Sub mnuSpara_Click()
stegtvå
End Sub
Private Sub stegtvå()
Konton = Konton
Antal = Antal + 1
Put filnr, Antal, Konton
post = Antal
stegtre
End Sub
Private Sub stegtre()
slogin = slogin
sAntal.sAntal = sAntal.sAntal + 1
Put sFilNr.sFilNr, sAntal.sAntal, Konton.login
sPost.sPost = sAntal.sAntal
form1.txtFörnamn.SetFocus
poster
rensa
End Sub
Private Sub mnuVisa_Click()
MsgBox ("Som systemadministratör så borde du veta hur man sköter detta vanliga loginprogram, men tydligen inte.")
MsgBox ("Du matar först in förnamn och efternamn och så generas ett konto med initialerna. Lösenordet rekomenderas starkt att det byts, och det kan du göra under File Byt lösneord där du även kan söka konto, ta bort konto, spara konto och skriva ut konto.")
End Sub
Private Sub txtEfternamn_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
txtLogin = Left(Konton.Förnamn, 1) & Left(Konton.Efternamn, 1)
txtLösen = ("v1") & Left(Konton.Förnamn, 2) & Left(Konton.Efternamn, 2)
Konton.login = txtLogin
Konton.Lösen = txtLösen
End If
slogin = form1.txtLogin
Konton.Efternamn = form1.txtEfternamn
Konton.Förnamn = form1.txtFörnamn
Konton.login = form1.txtLogin
Konton.Lösen = form1.txtLösen
Combo1.AddItem txtLogin
End Sub
Private Sub txtFörnamn_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
txtEfternamn.SetFocus
End If
End Sub
Private Sub mnuSkrivut_Click()
Printer.Print "Förnamn:" & txtFörnamn
Printer.Print "Efternamn:" & txtEfternamn
Printer.Print "Login:" & txtLogin
Printer.Print "Lösenord:" & txtLösen
Printer.EndDoc
End Sub
Private Sub txtLogin_Change()
Konton.login = form1.txtLogin
slogin = form1.txtLogin
End Sub
Private Sub txtLösen_Change()
Konton.Lösen = form1.txtLösen
End Sub
Private Sub txtFörnamn_Change()
Konton.Förnamn = form1.txtFörnamn
End Sub
Private Sub txtEfternamn_Change()
Konton.Efternamn = form1.txtEfternamn
End Sub
Public Sub poster()
Get filnr, post, Konton
End Sub
Public Sub rensa()
form1.txtEfternamn = ""
form1.txtFörnamn = ""
form1.txtLogin = ""
form1.txtLösen = ""
End Sub
frmSök
Option Explicit
Dim söknamn As String
Private Sub cmdAvsluta_Click()
Unload Me
End Sub
Private Sub txtSök_Change()
söknamn = txtSök
sök
End Sub
Private Sub sök()
Dim räknare As Integer
If Not söknamn = "" Then
söknamn = UCase(söknamn)
For räknare = 1 To sAntal.sAntal
Get sFilNr.sFilNr, räknare, Konton.login
If UCase(Trim(Konton.login)) = söknamn Then
sPost.sPost = räknare
End If
Next räknare
MsgBox ("Hittade ingen post")
Else
MsgBox ("Du har inte angivit något namn")
End If
End Sub
modul1
Global Konton As Kontoinfo
Global sAntal As sAntal
Global sFilNr As sFilNr
Global sPost As sPost
Type sPost
sPost As String
End Type
Type sFilNr
sFilNr As Integer
End Type
Type sAntal
sAntal As Long
End Type
Type Kontoinfo
Förnamn As String * 10
Efternamn As String * 10
login As String * 4
Lösen As String * 8
End TypeSv: VB6 problem.. HJÄLP!!
Om du sparar så här:
<code>
Open "testfil.txt" For Append As #1 ' skriver längst ner i filen
Print #1, "hej"
Close #1
</code>
så kommer allt under varann i txt-filen, om man sen använder ditt:
<code>
Dim namn As String
Open "c:\text2.txt" For Input As #1
Do Until EOF(1)
Input #1, namn
Combo1.AddItem namn
Loop
Close #1
</code>
så hamnar det helt ok i combolistan.
Har jag fattat fel nu?:-)Sv: VB6 problem.. HJÄLP!!
säg att det står
KT SL JH BO .... så skriver den ut det på samma sätt i boxen, jag vill ju så klart ha
KT
SL
JH
BO och om jag skriver in det i txt filen på det sättet så skrivs det ju ut i comboboxen på det sättet också, fast jag lyckas inte få till det att det skrivs ut i txt filen så som jag vill.
Tack för svaret.
koden där uppe är ändrad på lite granna. jag har även lite nya problem, dels att sökfunktionen inte funkar, den ska söka på dom posterna som finns i sök.txt och om den hittar någon som är exakt likadan så hämtar den alla poster från konton.txt och skriver ut i textboxarna. .. eller ska den göra.
och så har jag inte enns börjat på hur man tar bort konton. vilket jag också ska göra.
och den sista funktionen som ska finnas är att när man har matat in ett konto och ska spara så ska den kolla så att det inte finns något annat konto med samma namn, och om det gör det så ska man hoppa tillbaka till formuläret och skriva in en ny login för hand.Sv: VB6 problem.. HJÄLP!!
Open "testfil.txt" For Append As #1 ' skriver längst ner i filen
Print #1, STRÄNG
Close #1
Om STRÄNG innehåller "KT SL JH BO" så blir det så det skrivs i textfilen, om du delar strängen med split så skulle du få det rätt.
<code> 'räknar antal poster
Public Function arrayCount(ByVal arr As Variant) As Long
On Error Resume Next
arrayCount = UBound(arr, 1) - LBound(arr, 1) + 1
End Function
********************************************************
Private Sub Command1_Click()
Dim namn As String
Open "c:\text2.txt" For Input As #1
Do Until EOF(1)
Input #1, namn
Loop
Close #1
Dim sText() As String, STRÄNG
STRÄNG = namn
sText() = Split(STRÄNG)
lngAntalPoster = arrayCount(sText) 'räknar poster
Dim i
For i = 0 To lngAntalPoster - 1
Combo1.AddItem sText(i) 'ändra till 2 för nästa ord i strängen osv
Next i
End SubSv: VB6 problem.. HJÄLP!!
Sv: VB6 problem.. HJÄLP!!
> MsgBox ("Som systemadministratör så borde du veta hur man sköter detta vanliga loginprogram, men tydligen inte.")
Eftersom du anslår en så här "besserwisser" otrevlig ton, så får du fixa det bäst du kan.
/SvenSv: VB6 problem.. HJÄLP!!
Du LÄSER inte filen med append, du SKRIVER till den och det hamnar längst ner i filen.
Du LÄSER med INPUT och lägger det du läser i comboboxen med:
<code>
Dim namn As String
Open "c:\text2.txt" For Input As #1
Do Until EOF(1)
Input #1, namn 'HÄR HAR "NAMN" NU STRÄNGEN FRÅN TEXTFILEN
Loop
Close #1
Dim sText() As String, STRÄNG
STRÄNG = namn
sText() = Split(STRÄNG) ' DELAR UPP STRÄNGEN
lngAntalPoster = arrayCount(sText) 'RÄKNAR ANTAL POSTER (ORD I STRÄNGEN)
Dim i
For i = 0 To lngAntalPoster - 1 'LÄGGER ORDEN(POSTERNA) I COMBOBOXEN
Combo1.AddItem sText(i)
Next i
OBSERVERA att SPLIT delar strängar med mellanslag om inget annat anges, du måste då skriva "sText()=split(sträng, ",") om du har kommaseparerade ord.
Du måste oxå ha en textfil som har just som du har nu, dvs hela infot på en rad.
Hoppas du förstår nu.Sv: VB6 problem.. HJÄLP!!
Till Benny. Du bör sluta med att skriva så här.
> Open "c:\text2.txt" For Input As #1
I all vänlighet : så här bör du skriva i princip.
Dim FNum As Long
FNum = FreeFile
Open "c:\text2.txt" For Input As #FNum
-----------
---------
Close #FNum
/Sven
Sv: VB6 problem.. HJÄLP!!
Får se om jag är snabbare än Sven här...;)
FreeFile ger dej ett ledigt filnummer, du riskerar alltså inte att använda samma nummer på 2 filer (det blir inte bra...).
/JohanSv: VB6 problem.. HJÄLP!!
Undras om huvudfrågan löst sig:)Sv: VB6 problem.. HJÄLP!!
va ju såklart menat som ett skämt.. men visst, det är en liten knäpp på näsan när man själv står där med skägget i brevlådan :-).. jag hoppars att ni kan hjälpa mig ändå med dom andra sakerna också. så ändrar jag msgboxen..
Tack!
ska prova om jag får till den versionen som står längst ner.Sv: VB6 problem.. HJÄLP!!
Du Är Ursäktad :-)
Själv har jag råkat ut för detta flera gånger,
ibland sitter skämten fel, tex när jag fes i kyrkan.
/Sven 0 :-)Sv: VB6 problem.. HJÄLP!!
i alla fall, jag fixade det där med att man skulle kunna blädra mellan kontonen på ett helt annat sätt, ett som va mycket smidigare och enklare, med hjälp av commandbuttons =). jag får fixa det där med combobox lite senare.
nu har jag dock att ta bort konton, och att det inte ska gå att ha likadan login.
jag har uppdaterat koden ovan.