Výsledky 1 až 16 z 16

Téma: [C++ (DOS)] Pohyb po řádcích v textovém souboru.

  1. #1

    Standardní [C++ (DOS)] Pohyb po řádcích v textovém souboru.

    Nevíte někdo jak se dostat v textovém souboru na určitý řádek ? Dělám v C++ prohlížeč textu a potřeboval bych nějak nastavit pozici v souboru ze které bych potom začal načítat data.
    Moh bych to vyřešit pomocí cyklu kterej bude počítat znaky \n, ale to je takový dost krkolomný řešení a navíc bych to tak musel dělat při každém průchodu (při změně pozice) .
    I. AMD Phenom II X4 955 (HDX955WFK4DGM) [3200,1.15V-800,0.95V] | Ninja Mini (passive in windtunnel) | GB MA78GPM-DS2H | 2x4GB | Sapphire Radeon HD 4670 Ultimate | Corsair Force Series 60GB + Samsung HD502HJ | Pioneer DVR-111 | Dell U2410f + HP L2245w on Neo-Flex stand | Creative T20/portaPro | Logitech UltraX + Genius Maurus | silenced Asus TM210 (with NF-B9) + Chieftec 300W (CTP-300-12G) | Fedora
    II. Acer Switch 10 (Z3735F/64GB/FHD) + Dell Active Stylus
    III. ZyXEL NSA210 + WD20EARS

  2. #2
    Senior Member mince Avatar uživatele KtK
    Založen
    16.10.2002
    Bydliště
    Behind fuc*ing WorkTable Device (Praha zapad)
    Příspěvky
    1 709
    Vliv
    284

    Standardní

    Tak si ten soubor precti jednou, a zaindexuj si ty vyskyty.

    -napr spojovej seznam s intama, kde kazda polozka bude misto, na kterym se vyskytuje \n. Pak uz tu pozici snadno a mnohem rychleji najdes. - Teda jestli je to unosny reseni.
    Parasite lost, AKA the Girlfriend Mission:The Socka Project sleeps, lets use (her :) Durex! 1GHz in some soltek stuff, Ati rage 128, etc.. (it\'s noisy)
    IMB Thinkpad R31: celer 1.2GHz, 384M RAM, 60GB 5400rpm hitachi, i810 8MB onboard (na praci to staci ;)
    [pro archivni ucely] janina overclockerska poradna (.tar.gz, 1.1MB, otevrete si index.html v browseru podporujicim javascript a frames)

  3. #3

    Standardní

    Mě jde spíš o něco jinýho. Pomocí funkce SUBSTRING (kterou jsem si naprogramoval) můžu číst řetězec od pozice A do pozice B. Rozlišení v textovém režimu je nejspíš 80x25. Takže bych četl SUSTRING o velikosti 80 znaků a pomocí šipek měnil tu pozici A.

    Pak už by jen stačilo vypsat SUBSTRING z dalších 24 řádků a měl bych vyplněnou obrazovku. Pomocí šipek bych měnil aktuální řádek a znouvu vypsal ten aktuální + dalších 24 následujících.

    Potřeboval bych jen nastavit pozici na určitej řádek v souboru (index toho řádku by byl uloženej v proměný, kterou by potom jen stačilo měnit).
    I. AMD Phenom II X4 955 (HDX955WFK4DGM) [3200,1.15V-800,0.95V] | Ninja Mini (passive in windtunnel) | GB MA78GPM-DS2H | 2x4GB | Sapphire Radeon HD 4670 Ultimate | Corsair Force Series 60GB + Samsung HD502HJ | Pioneer DVR-111 | Dell U2410f + HP L2245w on Neo-Flex stand | Creative T20/portaPro | Logitech UltraX + Genius Maurus | silenced Asus TM210 (with NF-B9) + Chieftec 300W (CTP-300-12G) | Fedora
    II. Acer Switch 10 (Z3735F/64GB/FHD) + Dell Active Stylus
    III. ZyXEL NSA210 + WD20EARS

  4. #4
    Senior Member mince Avatar uživatele KtK
    Založen
    16.10.2002
    Bydliště
    Behind fuc*ing WorkTable Device (Praha zapad)
    Příspěvky
    1 709
    Vliv
    284

    Standardní

    takze programujes less

    No tak to si nacti do pameti cely soubor. A pak si naindexuj ty \n. jak jsem ti radil. nekde si drz na kolikatym radku odshora se nachazis (N). Pak si v tom indexu najdi N-tou polozku, a ta bude mit hodnotu N tyho \n (treba P, at se to neplete). A pak se jen posunes v obsahu souboru na Pty znak (mas ho cely v pameti, takze by to nemuselo trvat dlouho, adresova aritmetika rulzz..), nactes nejvyse 80 znaku - muzes zkoncit driv, kdyz je tam \n. A vypises to. pak se posunes v indexu o jednu polozku a to cely opakujes 25X.

    PS: Nevim jak v C, ale v pascalu z toho byl silene linej program. (Write je strasne pomaly) Taky jsem to delal. Vypsat obrazovku trva dyl, nez zmacknout dvakrat sipku, takze se to chova strasne. Chce to umet ASM, a strkat ty znaky primo do VideoRAM. Coz by snad nemuselo byt az tak obtizny.
    Parasite lost, AKA the Girlfriend Mission:The Socka Project sleeps, lets use (her :) Durex! 1GHz in some soltek stuff, Ati rage 128, etc.. (it\'s noisy)
    IMB Thinkpad R31: celer 1.2GHz, 384M RAM, 60GB 5400rpm hitachi, i810 8MB onboard (na praci to staci ;)
    [pro archivni ucely] janina overclockerska poradna (.tar.gz, 1.1MB, otevrete si index.html v browseru podporujicim javascript a frames)

  5. #5

    Standardní

    Ten LESS je pro mě jenom inspirace, tolik funkcí po mě nechtěj .

    S tim uložením celýho souboru do paměti bude celkem problém, má to bejt prohlížeč NEOMEZENĚ VELKÝCH souborů a ještě k tomu pod DOSem.
    I. AMD Phenom II X4 955 (HDX955WFK4DGM) [3200,1.15V-800,0.95V] | Ninja Mini (passive in windtunnel) | GB MA78GPM-DS2H | 2x4GB | Sapphire Radeon HD 4670 Ultimate | Corsair Force Series 60GB + Samsung HD502HJ | Pioneer DVR-111 | Dell U2410f + HP L2245w on Neo-Flex stand | Creative T20/portaPro | Logitech UltraX + Genius Maurus | silenced Asus TM210 (with NF-B9) + Chieftec 300W (CTP-300-12G) | Fedora
    II. Acer Switch 10 (Z3735F/64GB/FHD) + Dell Active Stylus
    III. ZyXEL NSA210 + WD20EARS

  6. #6
    Senior Member mince Avatar uživatele KtK
    Založen
    16.10.2002
    Bydliště
    Behind fuc*ing WorkTable Device (Praha zapad)
    Příspěvky
    1 709
    Vliv
    284

    Standardní

    No tak jesti to ma byt tak, tak co treba si drzet v pameti pole 80*25 znaku, nebo jeste lip 25 ukazatelu na char....\0, a pri kazdem stisku sipky to pole vhodne posunout, a na zbyvajici radek doseekovat v souboru podle indexu a nacist ho "on the fly"? Nacist <=80 znaku snad nezabere tolik casu..
    Parasite lost, AKA the Girlfriend Mission:The Socka Project sleeps, lets use (her :) Durex! 1GHz in some soltek stuff, Ati rage 128, etc.. (it\'s noisy)
    IMB Thinkpad R31: celer 1.2GHz, 384M RAM, 60GB 5400rpm hitachi, i810 8MB onboard (na praci to staci ;)
    [pro archivni ucely] janina overclockerska poradna (.tar.gz, 1.1MB, otevrete si index.html v browseru podporujicim javascript a frames)

  7. #7
    Administrátor mince Avatar uživatele Jezevec
    Založen
    08.10.2002
    Bydliště
    Teplice
    Příspěvky
    6 736
    Vliv
    300

    Standardní

    jj hodil bych cast do pameti - treba 10 obrazovek - a udrzoval to jako wokno do souboru. takze pri pohybu by se nejdriv zobrazilo co je potreba a teprve pak by se posunulo wokno v souboru. Takze by se zobrazovalo z pameti. Mno a v nejlepsim pripade jak pise KtK cast kterou zrovna vidis namapovat primo do video ram. Menit stranky video pameni jde celkem rychle, takze si ani nevsimnes, ze se neco delo, je to vlastne hned.

  8. #8

    Standardní

    Problém je právě v seekování, kromě šipek to musí umět i HOME,END,PGUP,PGDOWN a tam už by to asi drhlo....

    [edit] když jsem to psal tak jsem si nevšim toho předchozího příspěvku
    I. AMD Phenom II X4 955 (HDX955WFK4DGM) [3200,1.15V-800,0.95V] | Ninja Mini (passive in windtunnel) | GB MA78GPM-DS2H | 2x4GB | Sapphire Radeon HD 4670 Ultimate | Corsair Force Series 60GB + Samsung HD502HJ | Pioneer DVR-111 | Dell U2410f + HP L2245w on Neo-Flex stand | Creative T20/portaPro | Logitech UltraX + Genius Maurus | silenced Asus TM210 (with NF-B9) + Chieftec 300W (CTP-300-12G) | Fedora
    II. Acer Switch 10 (Z3735F/64GB/FHD) + Dell Active Stylus
    III. ZyXEL NSA210 + WD20EARS

  9. #9
    Administrátor mince Avatar uživatele Jezevec
    Založen
    08.10.2002
    Bydliště
    Teplice
    Příspěvky
    6 736
    Vliv
    300

    Standardní

    Citace Původně odeslal LM
    Problém je právě v seekování, kromě šipek to musí umět i HOME,END,PGUP,PGDOWN a tam už by to asi drhlo....
    Mno Home a End by trvalo mozna fous dyl, ale neni problem pridat dve spesl stranky do pameti pro tyhle ucely. Ale PG je pohoda - posunes okno misto 1 o 25 radku.

  10. #10

    Standardní

    Diky za rady. Těch 10 stránek v paměti zkusim, ale ten zápis přimo do videopameti už nejspíš nezvládnu...
    I. AMD Phenom II X4 955 (HDX955WFK4DGM) [3200,1.15V-800,0.95V] | Ninja Mini (passive in windtunnel) | GB MA78GPM-DS2H | 2x4GB | Sapphire Radeon HD 4670 Ultimate | Corsair Force Series 60GB + Samsung HD502HJ | Pioneer DVR-111 | Dell U2410f + HP L2245w on Neo-Flex stand | Creative T20/portaPro | Logitech UltraX + Genius Maurus | silenced Asus TM210 (with NF-B9) + Chieftec 300W (CTP-300-12G) | Fedora
    II. Acer Switch 10 (Z3735F/64GB/FHD) + Dell Active Stylus
    III. ZyXEL NSA210 + WD20EARS

  11. #11
    Senior Member mince Avatar uživatele KtK
    Založen
    16.10.2002
    Bydliště
    Behind fuc*ing WorkTable Device (Praha zapad)
    Příspěvky
    1 709
    Vliv
    284

    Standardní

    Citace Původně odeslal LM
    Diky za rady. Těch 10 stránek v paměti zkusim, ale ten zápis přimo do videopameti už nejspíš nezvládnu...
    V tom pripade az to budes predvadet, tak nemackej sipky moc rychle za sebou
    Parasite lost, AKA the Girlfriend Mission:The Socka Project sleeps, lets use (her :) Durex! 1GHz in some soltek stuff, Ati rage 128, etc.. (it\'s noisy)
    IMB Thinkpad R31: celer 1.2GHz, 384M RAM, 60GB 5400rpm hitachi, i810 8MB onboard (na praci to staci ;)
    [pro archivni ucely] janina overclockerska poradna (.tar.gz, 1.1MB, otevrete si index.html v browseru podporujicim javascript a frames)

  12. #12

    Standardní

    V pascale nie je ani taky velky problem s write ale s cyklami - su velmi pomale (riadiaca premenna je ulozena v pamati...) takze treba ich pouzivat co najmenej - napriklad pouzivanim writeln namiesto write. Inak write a writeln myslim pouzivaju priamy zapis do videoram.
    1: Asus P2B 1.10 • Celeron 1100@1364/1.8V • 512MB SDRAM • Samsung SP1213N+WD AC28400 • Toshiba XM-6402B+SD-M1212 • PowerColor AR2L Radeon 9100 64MB • 3C900-Combo • Bt848A • ASB-3940UA • AWE-64 • DTK PTP-3007 • VisionMaster 405 • Umax UC630 • Star LC24-200 Colour 2: PCPartner TXB820DS • Cyrix MII PR300/1.8V • 256MB SDRAM • 2xSamsung HD400LD+IT8212F • Accesstek CW4001 • LS-120 • Mystique 4MB • Millennium II 4MB • 3C509 • CMI8329A+Dream MIDI • ADI ProVista E44 • SyncMaster 203B Notebook: DTK FortisPro TOP-5A • P166MMX/1.8V • 80MB EDO • Hitachi 5K80 40GB • 12,1" TFT Router: A-Trend ATC-1425B • i486DX 50@33/5V • 48MB FPM • WD AC14300 • UMC UM9003F • HP PC LAN 16/TP+ Car: Mazda 323P BA • Z5 1489ccm, 65kW@5500rpm, 134Nm@4000rpm

  13. #13

    Standardní

    fseek()
    Why use windows, since there is a door?... SlackWare Linux ruleZz - Linux for the subgenius

  14. #14

    Standardní

    Citace Původně odeslal pavel.jakubisko
    fseek()
    Problém je jak se pomocí FSEEKu posouvat po jednotlivejch řádcích když je každej jinak dlouhej, kdyby byly stejně dlouhý tak by to šlo celkem lehce....
    I. AMD Phenom II X4 955 (HDX955WFK4DGM) [3200,1.15V-800,0.95V] | Ninja Mini (passive in windtunnel) | GB MA78GPM-DS2H | 2x4GB | Sapphire Radeon HD 4670 Ultimate | Corsair Force Series 60GB + Samsung HD502HJ | Pioneer DVR-111 | Dell U2410f + HP L2245w on Neo-Flex stand | Creative T20/portaPro | Logitech UltraX + Genius Maurus | silenced Asus TM210 (with NF-B9) + Chieftec 300W (CTP-300-12G) | Fedora
    II. Acer Switch 10 (Z3735F/64GB/FHD) + Dell Active Stylus
    III. ZyXEL NSA210 + WD20EARS

  15. #15
    Senior Member mince Avatar uživatele KtK
    Založen
    16.10.2002
    Bydliště
    Behind fuc*ing WorkTable Device (Praha zapad)
    Příspěvky
    1 709
    Vliv
    284

    Standardní

    Citace Původně odeslal LM
    Citace Původně odeslal pavel.jakubisko
    fseek()
    Problém je jak se pomocí FSEEKu posouvat po jednotlivejch řádcích když je každej jinak dlouhej, kdyby byly stejně dlouhý tak by to šlo celkem lehce....
    Rikam ti to uz po treti - zaindexuj si ty \n.Pak tech par znaku precist snad nebude trvat tak dlouho..
    Parasite lost, AKA the Girlfriend Mission:The Socka Project sleeps, lets use (her :) Durex! 1GHz in some soltek stuff, Ati rage 128, etc.. (it\'s noisy)
    IMB Thinkpad R31: celer 1.2GHz, 384M RAM, 60GB 5400rpm hitachi, i810 8MB onboard (na praci to staci ;)
    [pro archivni ucely] janina overclockerska poradna (.tar.gz, 1.1MB, otevrete si index.html v browseru podporujicim javascript a frames)

  16. #16

    Standardní

    co sa tyka rozlisenia ... tu mas kod ktory ti prepne na rozlisenie 80x30:
    Kód:
    void SetVideoMode80x30&#40;&#41;
    &#123;
    	asm &#123;
    		mov ax, 3		// nahozeni modu 80x25 pres BIOS
    		int 0x10
    		mov dx, 0x3c4	// sequencer adress register
    		mov al, 0		// reset
    		out dx, al
    		mov al, 1		// synchronni smazani sequenceru
    		inc dx
    		out dx, al		// zachovani obsahu obrazovky
    		dec dx			// sequencer adress register
    		mov dx, 0x3d4
    		mov al, 0x17	// mode control
    		out dx, al
    		inc dx			// mode control register
    		in al, dx
    		and al, 0x7f
    		out dx, al
    		dec dx			// sequencer adress register
    		mov al, 0x11	// light pen low
    		out dx, al
    		inc dx			// light pen low register
    		in al, dx
    		and al, 0x7f
    		out dx, al
    		mov dx, 0x3cc
    		in al, dx		// al <- nastaveni miscellaneous output registeru
    		or al, 0x0c0	// zmena radkovani 400 &#40;80x25&#41; na 480 &#40;80x30&#41;
    		mov dx, 0x3c2	// miscellaneous output register
    		out dx, al
    		mov dx, 0x3d4
    		mov al, 6		// vertical character display
    		out dx, al
    		mov al, 0x0b
    		inc dx			// vertical character display register
    		out dx, al
    		dec dx			// sequencer adress register
    		mov al, 7		// vertical synchronization position
    		out dx, al
    		mov al, 0x3e
    		inc dx			// vertical synchronisation position register
    		out dx, al
    		dec dx			// sequencer adress register
    		mov al, 9		// max raster address
    		out dx, al
    		mov al, 0x4f
    		inc dx			// max raster address register
    		out dx, al
    		dec dx			// sequencer adress register
    		mov al, 0x10	// light pen high
    		out dx, al
    		mov al, 0x0ea
    		inc dx			// light pen high register
    		out dx, al
    		dec dx			// sequencer adress register
    		mov al, 0x11	// light pen low
    		out dx, al
    		mov al, 0x8c
    		inc dx			// light pen low register
    		out dx, al
    		dec dx			// sequencer adress register
    		mov al, 0x12	// vertical end scan line
    		out dx, al
    		mov al, 0x0df
    		inc dx			// vertical end scan line register
    		out dx, al
    		dec dx			// sequencer adress register
    		mov al, 0x15	// vertical start blanking
    		out dx, al
    		mov al, 0x0e7
    		inc dx			// vertical start blanking register
    		out dx, al
    		dec dx			// sequencer adress register
    		mov al, 0x16	//vertical end blanking
    		out dx, al
    		mov al, 4
    		inc dx			// vertical end blanking register
    		out dx, al
    		dec dx			// sequencer adress register
    		mov al, 0x11	// light pen low
    		out dx, al
    		inc dx			// light pen low register
    		in al, dx
    		or al, 0x80
    		out dx, al
    		dec dx			// sequencer adress register
    		mov al, 0x17	// mode control
    		out dx, al
    		inc dx			// mode control register
    		in al, dx
    		or al, 0x80
    		out dx, al
    		mov dx, 0x3c4	// sequender adress register
    		mov al, 0		// reset sequencer
    		out dx, al
    		mov al, 3
    		inc dx			// reset sequencer register
    		out dx, al
    		&#125;
    &#125;
    nahodenie s5 na 80x25:
    Kód:
    void SetVideoMode&#40;word mode&#41;
    &#123;
    	asm mov ax, &#91;mode&#93;
    	asm int 10h
    &#125;
    ako parameter zadas 0x03

    a nakoniec makra na priamy zapis a citanie znaku vo videoRAM
    Kód:
    #define read_char&#40;x, y&#41; &#40;*&#40;unsigned char far *&#41; MK_FP&#40;0xB800, 160*&#40;y&#41;+2*&#40;x&#41;&#41;&#41;
    #define put_char&#40;x, y, character&#41; &#40;&#40;*&#40;unsigned char far *&#41; MK_FP&#40;0xb800, 160*&#40;y&#41;+2*&#40;x&#41;&#41;&#41;=&#40;character&#41;&#41;
    je to vsetko otestovane v Borland C++ 3.1

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Podobná témata

  1. chyb polozka po startu PC nejde nacist se souboru WIN.INI
    Založil Visi v sekci fóra Ostatní operační systémy
    Odpovědí: 4
    Poslední příspěvek: 26.11.2005, 18:38
  2. Sdileni souboru po propojeni compu pres OvisLink 1120AP??
    Založil Kositch v sekci fóra Sítě
    Odpovědí: 4
    Poslední příspěvek: 24.03.2005, 16:18
  3. Odpovědí: 3
    Poslední příspěvek: 10.01.2005, 11:41

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •