X píše:V BASICu jde načítat kanál postupně (opakováním), takže žádné omezení v tomto není ...
To je samozřejmě pravda:
Kód: Vybrat vše
10 OPEN "soubor1" FOR RANDOM AS #1
20 OPEN "soubor2" FOR RANDOM AS #2
30 a$=" ":j=1
40 FOR i=1 TO LOF(1)
50 GET #1,a$
60 ...
Má to jednu podstatnou chybu, to volání systému je strašně pomalá funkce, takže by těch 600 mega přežvykoval půl dne. Kdysi jsem se s tím dost natrápil, a výsledek byl ten že jsem tam dal
a$=SPACE$(1024) a pak to sám rozkopíroval přes FOR do pole kde jsem to zpracovával, vyšlo to i ve šnečím interpretu několikanásobně rychlejší! Prostě jsem si udělal vlastní cache. Větší už neměla znatelný vliv, i když sektory na disku jsem měl 32 KB.
Z tohohle důvodu jsem automaticky uvažoval o
LINE INPUT a$, zvlášť že se jedná o řádkový soubor, ale protože M$ se roky nedokázal přenést přes svůj osmibitový stín, tak dvacet let ve všech verzích BASICu pořád používal pro načítání do řetězce rutinu, kterou Gates napsal v pětasedmdesátém roce pro Altair, a délku ukládal do jednoho bajtu. Ne že bych očekával že v logu se objeví řádek delší než těch 255 B, ale sám víš jak to u počítačů chodí - jediná věc na kterou se můžeš spolehnout je to, že se nemůžeš na nic spolehnout
Takže nakonec jsem zvolil Céčko, kvůli rychlosti a také kvůli tomu, že takový program bude potřebovat minimum paměti, navíc se dá bez problémů přeložit v jakémkoliv systému, na Windowsu třeba pomocí free DevC++. Jen mě tak napadá, když by to spustil příkazem
type soubor1.txt | radky.exe, dokáže to už Windows spustit paralelně jako unixové systémy, nebo si tu rouru pořád ukládá na disk do dočasného souboru, který pak pustí do toho druhého programu, jak to fungovalo od pětaosmdesátého roku v DOSu?
P.S. Bavíme se doufám o BASICu, a ne o tom Visualpaskvilu, který s ním kromě názvu nemá nic společného? Ten jsem si vyzkoušel a s nedobrým pocitem okolo žaludku jsem se radši věnoval Pascalu...