Hej! Det verkar vara en INI-fil du vill läsa, kan det stämma? Hej Christian! Hej Sofia. ÅHHHHH! Så bra!!! Tänk vad glad man kan bli av att få hjälpa till och att bli hjälpt när det lyckas :-) Ja, visst blir man! Den hämtar det som finns likhets-tecknet, vad som än står.. :-) Hej! Nu ska vi se då.. Jag får känslan av att det inte är riktigt korrekt Unicode-kodning med tanke på att fyrkanterna du hade som exempel har CharCode 127 men det får jag inte när jag själv testar att göra om en sträng till Unicode genom StrConv("help",vbUnicode), men jag kanske misstar mig.. Hursomhelst så finns lite information från Microsoft på dessa sidor: Hej Christian! Nu är jag nästan med på vad du menar :-) SKUMT!!! Jag ser ovan att den bytt ut några av fyrkantstecknen även i mitt senaste svar till frågetecken..... Nu har jag ingen aning om vad som pågår ??? Ser att den inte tar fyrkanterna. Jag kanske är helt ute och cyklar, men det verkar som du har en helt annan kodning än Unicode där.. Hur har du fått fram lösenordet? Känns som tecken som inte stöds ordentligt (kanskei nte är korrekt konverterade till Unicode från första början?).. Det är inte alls omöjligt, de är krypterade lösenord som våra tekniker i USA fixat krypteringen av. Man skulle väl (på något sätt) kunna skriva nån slags iteration som genererar alla teckenuppsättningar som finns tillgängliga, med det lösenordet (inkl. "konstiga" tecken) för att se om man kan få fram något som ser någorlunda vettigt ut.. Värdet jag vill komma åt är krypterat. Det kan vara så att det värdet som står i den cellen måste ha deklarationen binary för att kunna läsas ut rätt och hanteras från ditt system. Hej Pelle! Han kanske tänkte på: Det är inte så jag menar. Om vi säger att du använder en variabel av typen sträng för att hämta data som är binärt blir det fel. Du får alltså säga: Dim x as Binary för att få det rätt. Dock vet jag inte om det är rätt väg att gå - är inte insatt i ditt problem och för att kunna göra en korrekt analys behöver man nog se källfilen för att kunna lösa det. Det är inte så att de frågetecken du får ut av StrConv(strängen,vbFromUnicode) som ger ????? ska vara så då? Krypterade strängar kan ha alla möjliga konstiga tecken beroende på algoritm och vad som används, och om då den krypterade strängen innehåller något knasigt icke-svenskt-tecken så kan det väl strula till en del.. Hej Christian! Christian, i funktionen du rekommenderade används GetPrivateProfileStringA.inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
Jag har en fil i unicodeformat som jag vill plocka ut vissa värden ur och konvertera dem till ansi.
Problem nr 1 är att den läser bara varannan rad....?
Ex. på rader i filen;
[App]
RegState=1
Search Field=NAME
Search Mode=0
Query Tool Highlight Cursor Move=1
Number Format=A
Version=6.3.1
FTP Password=
Blir vid inläsningen;
[App]
Search Field=NAME
Query Tool Highlight Cursor Move=1
Version=6.3.1
Koden ser ut som följer:
Do While Not fso.AtEndOfStream
testrow = fso.readline
Debug.Print testrow
Loop
Problem nr 2 är jag inte får unicodekonverteringen att fungera, den vb-fromunicode-konverterade strängen ser väldigt lustig ut....
testrow = fso.readline 'returnerar " Q u e r y T o o l H i g h l i g h t C u r s o r M o v e = 1 " där varje mellanslag är ett fyrkants-tecken.
Konverterad:
testrow = StrConv(testrow, vbFromUnicode) 'returnerar "????? ???? ????????? ?????? ???????"
Någon som ser var problemet ligger....?
Mvh, SofiaSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
Vill du läsa den som en INI-fil eller rad för rad och jämföra? (INI-fil är ju klart det lämpligaste i detta fallet)
Här finns information om Unicode:
http://www.mvps.org/vb/hardcore/html/whatisunicode.htm
Här är information från Microsoft:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbcondatatypes.asp
The Byte Data Type
If the variable contains binary data, declare it as an array of the Byte data type. (Arrays are discussed in "Arrays" later in this chapter). Using Byte variables to store binary data preserves it during format conversions. When String variables are converted between ANSI and Unicode formats, any binary data in the variable is corrupted. Visual Basic may automatically convert between ANSI and Unicode when:
- Reading from files
- Writing to files
- Calling DLLs
- Calling methods and properties on objects
mvh
Christian SvenbergSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
Den har extension .dat men jag kanske ska läsa den som en ini-fil.
Det jag måste göra är att komma åt en viss rad för att byta ut ett tecken som är fel.
Hur skulle detta kunna lösas om man läser den som en INI-fil?
Tack för hjälpen!
Mvh,
SofiaSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
http://www.svenberg.net/vb/modINI.bas
är en väldigt simpel modul som du kan använda för att läsa och skriva till INI-filer,
detta kan göras genom följande..
Läsa sektion [App] och värdet för RegState:minVariabel = ReadINI("App", "RegState", "minfil.dat")
minVariabel kommer då innehålla värdet 1 av typen String.
Vill du ändra Search Fields värde till t.ex. "pellesoft" så skriver du:Call WriteINI("App", "Search Field", "pellesoft", "minfil.dat")
Hoppas det fungerar fint för dig!
mvh
Christian
Sv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
1000 tack! Funkar ju kalasbra!
Mvh, SofiaSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
Lycka till med ditt program!
mvh
ChristianSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
Din funktion funkar perfekt!
Men om mitt värde jag ska hämta ser ut så här fxppfg5 t.ex. så returneras värdet f?x?ppfg5 t.ex. Den tar alltså vissa unicodetecken men inte andra.
Hur gör jag på enklast möjliga vis för att få det exakta värdet att returnera från dina fina funktioner?
Stort tack om du på rak arm vet hur jag ska fixa till det. Annars får jag leta själv.
Mvh, SofiaSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
Så nu vill du alltså ta fram värdet och konvertera från unicode, om jag förstått rätt?
Värdet ligger ju i ReadINI-returen, och det får man använda då på något fiffigt sätt för att konvertera..
Som jag skrev i mitt tidigare svar (länk till MS-sida) där dom skriver att VB automatiskt konverterar runt lite mellan typera (låter som nån cirkus), och därför blir det knas.. Du kan nog få mer info genom att läsa den artikeln.. (Andra svaret från mig eller så..)Sv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
Jo den hämtar det som står i filen men om Unicode-tecknet är över 255 så känner inte VB igen det utan skriver ett frågetecken istället.
Jag läste artiklarna och det känns mer som att de förklarar varför det blir massa frågetecken istället för unicode-tecken men jag vill ju veta hur jag ska komma runt det. Jag måste ha med de tecknen ut från filen.
Någon har en förslag på kodsnutt som gör att jag får behålla mina unicodetecken?
/Mycket tacksam SofiaSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
Detta verkar vara den vettigaste länken:
http://msdn.microsoft.com/library/en-us/vbenlr98/html/vafctStrConv.asp
Här finns lite allmänt om strängar
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnw32dev/html/ora_apiprog6_topic1.asp
Om inte något av det ovanstående fungerar när man experimenterar lite så får jag nog sätta mig lite mer ingående med det för att kunna bistå med mer hjälp :-)
mvh
ChristianSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
Jag kanske varit otydlig men egentligen vill jag ju inte KONVERTERA utan HANTERA alla specfika tecken.
Om det i filen står 56o??sr22 så vill jag också ha det värdet, inte 56o??sr22 som jag nu får tillbaka.
Tack för din hjälp!
Jag letar febrilt jag med. Tycker också att allt känns konstigt - hittar ingenting om precis ovanstående problem. Bara massa konverteringsfunktioner.
Mvh, sofiaSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
Du har alltså en .dat-fil som du kan läsa från genom ReadINI-funktionen..
Kan du visa något exempel på hur du gör (även lite exempel-innehåll från din .dat-fil) och vad du får ut av det? Samt vad du EGENTLIGEN vill få ut av det.. :o)
mvh
Christian :pSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
Så här gör jag i allafall;
pw = ReadINI("Communications", "FTP PASSWORD", ArgFileName) 'ArgFileNAme är namn + sökväg till min datfil
Vad din readIni gör vet du ju men jag redovisar i alla fall om även någon annan läser denna tråd:
Function ReadINI(Section As String, KeyName As String, filename As String) As String
Dim x As Long
Dim sSection As String, sEntry As String, sDefault As String
Dim sRetBuf As String, iLenBuf As Integer, sFileName As String
Dim sValue As String
sSection$ = Section
sEntry$ = KeyName
sDefault$ = ""
sRetBuf$ = String$(256, 0)
iLenBuf% = Len(sRetBuf$)
sFileName$ = filename
x = GetPrivateProfileString(sSection$, sEntry$, sDefault$, sRetBuf$, iLenBuf%, sFileName$)
sValue$ = Left$(sRetBuf$, x)
ReadINI = sValue$
End function
datfilen ser ut så här:
[Communications]
Transfer Method=2
Download=1
Protocol=8
Port=0
Delay=60
Retries=2
DCB=0000000000000000000000000000000000000000000000000000000000
Timeout=30
FTP Server=203.102.73.123
FTP Username=!upetterson
FTP Password=56o??sr22
FTP DB Directory="other"
FTP MVS=0
FTP Timeout=120
Om det i värdet för FTP Password kommer några frågetecken så är det FEL. När jag läser nu så är det fyrkanter men det var det även i mitt ovanstående inlägg som sen fick frågetecken istället...
Jag vill alltså ha värdet precis som det ser ut i filen, dvs utan frågetecken istället för fyrkanter.
Mvh, SofiaSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
Kan jag maila filen till dig istället så ser du precis vad den innehåller?
Mvh, SofiaSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
Sv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
De hävdar att det är unicode men jag håller med dig, jag är starkt tvivelaktig till detta.
Kan man kolla vad det annars kan vara...? Är så dålig på olika teckenuppsättningar, vad som skiljer dem åt och hur man hanterar dem.
/SofiaSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråga
Jag förstod inte om lösenorden krypterade eller dekrypterade.Sv: inläsning av fil sker på varannan rad samt vbFromUnicode-fråg
/SofiaSv: inläsning av fil sker på varannan rad samt vbFromUnicode-frå
Sv: inläsning av fil sker på varannan rad samt vbFromUnicode-fr
Det är ingen cell utan en fil jag hämtar värdet i från.
Mvh, SOfiaSv: inläsning av fil sker på varannan rad samt vbFromUnicode-f
Dim fFile as Integer
fFile = FreeFile
Open "filen" for Binary Access Read as fFile
Close fFile
Jag vet dock inte om det fungerar, du får prova..
mvh
Christian
Sv: inläsning av fil sker på varannan rad samt vbFromUnicode-f
Sv: inläsning av fil sker på varannan rad samt vbFromUnicode-frå
Borde det inte fungera att hantera enbart det du har i filen då? Så får mottagande part sköta det, som (om jag förstått det rätt) är den part som skapat det..
Jag lyckades inte lösa det genom att definera en variabel som Binary, kanske någon annan kan..
mvh
ChristianSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fr
Värdet jag har i filen och värdet jag får när jag hämtar värdet och stoppar in i en variabel är två helt skilda värden. (Tyvärr, meningen är ju att de ska vara lika för att detta ska funka.)
Den filen jag stoppar in lösenordet i används vid påloggning på FTPservern, eller informationen i filen snarare. Och det fungerar inte med det lösenordet jag stoppar in om det har frågetecken i sig.
Mvh, SOfiaSv: inläsning av fil sker på varannan rad samt vbFromUnicode-fr
Jag undrar om man inte istället ska använda GetPrivateProfileStringW? Har försökt hitta kodexempel på denna för att testa men hittar bara för VB.net.
Du har inget sådant kodexempel också? Eller någon annan?
Mvh,
SOfia