Načítanie binárneho DOS súboru   otázka

I/O operace

Potrebujem načítať binárne súboru z doby MS-Dos. Program bol urobený v pascale alebo turbopascale, ale už na win Vista a 7 nefunguje. Nepoznám ani presnú štruktúru súboru ale nemali by tam byť žiadne obrázky databázy iba technické údaje pravdepodobne v textovom tvare.

Začal som takto:

Dim fs As New FileStream("d:\test.xxx", FileMode.Open)
Dim b(fs.Length - 1) As Byte
fs.Read(b, 0, b.Length - 1)
fs.Close()
fs = Nothing

Neviem ako súbor rozdeliť na jednotlivé záznamy-riadky a previesť údaje do čitateľnej podoby napr. do textového poľa aby som ich mohol prečítať ako bežný text. Za rady vopred Ďakujem

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zjistíte kódování, pole bajtů převedete na řetězec, naučíte se něco o příkazech pro práci s řetězci a máte to doma.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Kódovanie je Kamenických

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Skúšal som to cez System.Text.Encoding.... ale stále som nepokročil.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Napriek snahe a googlovaniu sa mi podarilo ten súbor načítať iba rovnako ako keď si ho pozriem v editore. Neviem čo ďaľej, nemohol by ma niekto nasmerovať trošku podrobnejšie ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Možno by pomohlo dať jeden z tých súborov niekde na internet a sem dať link.Potom môžu aj ostatní nazrieť do štruktúry súboru.A pri tom skúmaní pomôže PSPad.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

http://www.uloz.to/7613879/test-grf

Je to len 15kb

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Počkať keď je to textový súbor v kódovaní Kamenických, tak ani nie skúmať, ale rovno previesť.Už sa tu riešil prevod opačným smerom, toto bude tomu dosť podobné.

http://vbnet.cz/forum-tema--3388-prevod_...

Myslel som, že binárný súbor je niečo zložitejšie, ako napr. .exe, .zip a veľa ďalších formátov.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nie nejedná sa o žiadne programové súbory, je to dátový súbor starého programu z doby MSDOS, ktorý sa používal cca od r.1992 v dobe superprocesora i286 až do cca r.2004. pracoval ešte na WIN ME, na XP s problémami a na WIN Vista a Win7 už nepracuje vôbec. Chcel by som prekonvertovať tieto údaje do nového programu aby som nemusel ešte raz robiť to čo som už pred niekoľkými rokmi už urobil. K tomu potrebujem prečítať obsah súborov do nejakej pre mňa čitateľnej podoby čo sa mi nedarí. Nepoznám internú štruktúru uložených údajov ale napr. takto sú uložené textové údaje :

Ń„÷˙‚ X  -0.56- „ƒe÷˙Č‚ X  -3.89- ‰%ů˙Ç‚ X  -2.39- 0ˆ)ů˙ß‚ X  -1.83- A‡,ů˙9‚ X  -2.72- Áƒhů˙‚ X  -9.07- †˜ú˙Č‚ X 

Takto sú uložené texty napr. "-0.56-" "-3.89-" "-2.39-" ale môže tam byť napísaný ľubovoľný text. Neviem kde začína a končí záznam a ako "dešifrovať" ten zvyšok. Skúšal som to cez system.text.encoding.... ale niečo robím stále zle

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V tom odkaze čo som napísal minule písal p. Linhart o opačnom prevode do u tf-8, že to treba skonvertovať do nejakého tretieho formátu a 31 znakov nahradiť.Prevod do utf-8 resp. iného .netom podporovaného kódovania bude to isté, len opačne.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Možno som sa nevyjadril dosť jednoznačne ja nemám problém z kódovaním Kamenických ako takým, už som to raz urobil vo VB6 rovnako to urobím aj vo VB .NET ja neviem vo VB .net previesť údaje v tom dátovom súbore do podoby v ktorej by som s nimi mohol ďalej pracovať. Neživím sa programovaním vo VB .Net začínam doteraz som všetko čo som potreboval urobil vo VB6 ale nedá sa v tom pokračovať donekonečna život ide ďalej VB6 je už minulosť.

Tu je ukážka textov z toho dátového súboru :

Ś6 @ ;üt ÷S d cw y_  „  Ko¨ice | ş_  „  ===Ś¨‡ź‘˜ ˇ‚Ł„“¤=== •} ˝_  „  ===ś›€†’ťŹ‹—Ą=== Ë~ ˝_  „  Franti¨ek ďx T`  „  ’ilina Cz  `  „  B novce + ( 

Takto sú uložené texty "František", "Žilina", "Košice", "Bánovce", "===ľščťžýáíéúäôň==="

U vlastného textu je jednoznačne vidieť že národné znaky zodpovedajú kódovaniu Kamenických. Čo neviem je ako prečítať ten zvyšok okolo textov.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To musíte najprv vedieť, čo je v tom zvyšku zakódované a ako.Na súbory čiastočne binárne a čiastočne textové môžte použiť aj StreamReader, aj BinaryReader(oba sú z System.IO), podľa toho, čo je jednoduchšie a s tým použiť aj príslušné kódovanie v System.Text.Encoding .

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mysleli ste asi takto ? :

Dim fInfo As New FileInfo("d:\test.xxx")
Dim numBytes As Long = fInfo.Length
Dim fStream As New FileStream("d:\test.xxx", FileMode.Open, FileAccess.Read)
Dim br As New BinaryReader(fStream)
Dim data As Byte() = br.ReadBytes(CInt(numBytes))

Dim myData As String = System.Text.Encoding.Default.GetString(data)

Vyskúšal som utf 7-8-32, unicode, default, ascii......

Stále nijaký použiteľný výsledok.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Skúste ho spustiť pod Dos-box -om.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pod Dosboxom sa dá spustiť ale z neznámeho dôvodu nepracuje korektne. Program sa prepína do nejakého VESA modu a rýchlosť je doslova tragická. Prekreslovanie obrazovky pripomína premietanie diapozitívov...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback