Om just detta lär jag nog få återkomma ett antal gånger. Har knappt använt binary read. Men det ser väl ut som den första går igenom filen tecken för tecken och den andra tar 3000 tecken åt gången? Hej Herman, jo det gick blixtsnabbt. Hej förstod väl att det inte skulle vara så lätt ;) Hej. Du kan skicka filen till herman@owns.it (zippa den).Om binary read
Mitt första problem, jag har hittat bl a två kodsnuttar som läser in en fil i en textruta.
Jag tycker att resultaten ser olika ut:
Denna tar lång tid att läsa in:
<code>
Dim fNr As Long, Char As Byte, outStr As String
Dim i As Long, sFil As String, strSize As Long, del As Long
ProgressBar1.Visible = True
If Label1.Caption > "" Then
sFil = Label1.Caption
DoEvents
ProgressBar1.Min = 0
fNr = FreeFile()
Open sFil For Binary As #fNr
strSize = LOF(fNr)
ProgressBar1.Max = strSize
For i = 1 To LOF(fNr)
Get #fNr, i, Char
If Int(Char) > 0 Then outStr = outStr & Chr$(Char) '31
DoEvents
del = del + 1
ProgressBar1.Value = del
Next 'i
Close #fNr
Text1.Text = outStr
ProgressBar1.Visible = False
Else
Label1.Caption = "Du måste välja en fil först"
End If
</code>
Denna går "blixtsnabbt"
<code>
Dim strRow As String
Dim strText() As String
Dim lngCount As Long, del As Long, strSize As Long
Dim i As Long, sFil As String
If Label1.Caption > "" Then
sFil = Label1.Caption
DoEvents
ProgressBar1.Visible = True
ProgressBar1.Min = 0
strRow = Space(3000)
Open sFil For Binary As #1
strSize = LOF(1)
lngCount = (LOF(1) \ 3000)
If lngCount < (LOF(1) / 3000) Then lngCount = lngCount + 1
ReDim strText(1 To lngCount)
For i = 1 To lngCount
Get #1, , strRow
strText(i) = Replace(strRow, vbNullChar, "")
del = del + 1
ProgressBar1.Value = del
Next
Close #1
Text1.Text = Join(strText)
ProgressBar1.Visible = False
Else
Label1.Caption = "Du måste välja en fil först"
End If
</code>
Är det någon skillnad mellan dessa koder(resultatet". Jag får för mig att denna sista kod inte läser in allt?Sv: Om binary read
Jag ser också att du använder både "\" och "/" för att dela jag tror "/" är rätt att använda. Det kanske är det som gör att du inte får mer allt?
kollade i MSDN(går inte att klara sig utan) och klistar in en del av vad som stod under "GET Statement"
<code>
For files opened in Binary mode, all of the Random rules apply, except:
The Len clause in the Open statement has no effect. Get reads all variables from disk contiguously; that is, with no padding between records.
For any array other than an array in a user-defined type, Get reads only the data. No descriptor is read.
Get reads variable-length strings that aren't elements of user-defined types without expecting the 2-byte length descriptor. The number of bytes read equals the number of characters already in the string. For example, the following statements read 10 bytes fromfile number 1:
VarString = String(10," ")
Get #1,,VarString
</code>
Vet inte vad du ska göra men om bara ska läsa in en fil i en textbox så borde det här funka?
obs. har inte testat koden så jag vet inte om den funkar som jag vill.
<code>
Dim strRow As String
Dim strText As String
Dim sFil As String
If Label1.Caption > "" Then
sFil = Label1.Caption
Open sFil For Binary As #1
strRow = string(LOF(1)," ")
Get #1, , strRow
Close #1
strText = Replace(strRow, vbNullChar, "")
Text1.Text = strText
Else
Label1.Caption = "Du måste välja en fil först"
End If
</code>Sv: Om binary read
OK det är nog bäst att jag försöker att förklara min tanke.
I min keyboard(Korg PA80) så laddar jag bl a in olika styler(sty).
Varje userstyle har 16 styler.
När jag använder din kod så blir det så här ung.
<code>
É‘KORF70sDi1*SFF 70sDi1*SFF 70sDi2*SFF 70sDi2*SFF 16Danc*SFF 16Danc*SFF DanceF*SFF DanceF*SFF DanceS*SFF DanceS*SFF SoulDa*SFF SoulDa*SFF Clubda*SFF Clubda*SFF PartyP*SFF PartyP*SFF SatNig*SFF SatNig*SFF Entran*SFF Entran*SFF 60`s Dance
60`s Dance
ModernFabioModern*SFF'osv
</code>
Det jag först ville göra är att hämta ut styl-namnen.
Som du ser så är de dubbleter, skall alltså bara ha en av varje, dessutom så börjar den inte direckt utan i blocket efter KORF.
Nu är det inte nog med det. Som jag nu har det, så lägger jag in allt i en textruta, jag ville ha en textruta för varje styl-namn, och det måste vara dynamiskt, det är inte säkert att det finns 16 styl-namn.
Det innebär att jag måste försöka att komma ihåg hur man gjorde textrutorna dynamiska.
Det är bra mycket mera som jag skall göra, men vi håller så här så länge.
Tack för att du försöker att hjälpa mig.Sv: Om binary read
Är ”korf” och ”mordernfabio” namn på userstyles? Ska alla styles finnas i samma lista alltså man ska inte skilja på dom olika userstyles?
Jag tycker inte du ska använda replace raden för den kanske bara är till nackdel om man ska dela upp texten. Om du har tur är det lika många tecken i varje "style"? Då kan du kanske till och med öppna den med "random access" istället för "binary access"?
Men troligen måste du dela upp det manuellt alltså försöka hitta samband så du kan särskilja dom olika style-namnen och sätta dom i en array. Och efter det ta bort dubbletterna.
Du får kolla vilka char nummer dom olika konstiga tecknena har så kanske du kan lista ut något sätt att dela upp dom. T.ex. ser jag att tecknena mellan dom olika style-namnen är mellan charnr 0-32 det enda som kan förekomma i dina style-namn är 32 som är ”space”.
Om jag ska kunna göra någon ordentlig funktion skulle jag behöva ett längre exempel på texten och utan replace. Bäst skulle vara att ha filen du ska bearbeta. För jag vet inte om något tecken försvinner på vägen om du klistrar in det här?
När du har fått till arrayen kan du börja tänka på det andra.Sv: Om binary read
Korf vet jag inte vad det är, kanske ett nyckelord, medans modernfabio är en userstyle.
Om jag inte använder mig av replacen, så skriver den bara ut ett tecken, annars så får jag med allt.
Likadant blir det med Random, enbart ett tecken.
De olika userstilerna har olika längd...
Du har rätt i dina funderingar, men som jag tänkte:
Först så ville jag ha tag i, och skriva up userstylerna, i detta fallet 16 st.
Steg två så ville jag kunna markera en userstyle och då kunna lyssna(helst) på dessa (intro1,intro2,variation1,variation2,variation3,variation4,ending1,ending2).
Jag kan mycket väl skicka med resultatet till dig(det ser annulunda ut än hos Pellesoft) men den är stor, och jag tycker att dett kanske vore bättre om jag skickade orginalfilen till dig isf.
Vad tror du själv?Sv: Om binary read
Så kan jag göra ett försök. Lovar inget ;)
t.ex. 70sDi1*SFF är det en style? Om det är till vilken userstyle hör den? mordernfabio?
Alltså om jag fattat det rätt ska man skapa 1 array för userstylerna + 1 array för varje userstyle * 16 st i detta fallet = 17 arrayer
det du skrev
"då kunna lyssna(helst) på dessa (intro1,intro2,variation1,variation2,variation3,variation4,ending1,ending2)."
förstod jag inte mycket av men det kanske klarnar när jag får filen.
Skriv gärna hur arrayerna ska se ut på filen du skickar.
Första arrayen när man kollar userstylerna
mordernfabio
....
osv
array om man klickar på mordernfabio
70sDi1*SFF ???
70sDi2*SFF ???
osv
skriv gärna en till userstyle array så blir det enklare för mig.