Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  7 952
Har to korte kodesnutter jeg gjerne vil vite hvordan de tar seg ut i andre språk.

Kode

OPEN "i", #1, "c:\test.txt"
10 a = a + 1
INPUT #1, a$(a)
IF EOF(1) = 0 THEN GOTO 10
Denne biten leser linje for linje av fil fra disk, og lagrer i a$ plass a
merket "$" sier bare att a$ er string, mens a er vanlig variabel.
Nå trenger ikke exemplene å være så sære att det blir brukt samme variabelnavn på string som tallvariabel.

Kode

c$(c) = MID$(a$(a), b , 12)
Denne biten leser streng a$(a) og henter 12 tegn med start fra plass b

Ble litt rotete spørsmål, men satser på att det er forståelig

Hm, ingen svar !
Hva med bare siste linje, hvordan vil den se ut i andre språk ?
Sist endret av asmika; 6. desember 2011 kl. 22:44.
Tenker du noe lignende dette? Python eksempel

Kode

FILE = open("some_file.txt")
FILE.seek(10)
while True:
    data = FILE.read(12)
    if not data: break
    print data
Åpner opp filen "some_file.txt". søker til posisjon 10 og starter å lese derfra. Den leser så ut 12 tegn om gangen frem til den møter "End-of-File".
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar

Kode

string filedata = File.ReadAllText("filnavn.txt");
Console.WriteLine( filedata.Substring(b, 12) );
Skrevet løst fra hukommelsen og ikke testet. Klokka halv ni.

Språket er C#.
Sist endret av robhol; 12. desember 2011 kl. 08:38.
Trådstarter
Sitat av etse Vis innlegg
Tenker du noe lignende dette? Python eksempel
Vis hele sitatet...
Helt klart noe i den retning

I første kodesnutt fra meg leser og lagrer ( i minne ) linje for linje, mens andre kode tar ut tegn i et avgrenset område.

Burde forlate quickbasic og begynne med noe mere moderne programmeringsspråk. Men vet ikke helt hva. Visual ettellerannett virker nokså tidkrevende og plasskrevende.
Sitat av asmika Vis innlegg
Burde forlate quickbasic og begynne med noe mere moderne programmeringsspråk. Men vet ikke helt hva. Visual ettellerannett virker nokså tidkrevende og plasskrevende.
Vis hele sitatet...
Regner med du følger programmerernes adventskalender? 24 språk på 24 dager. Burde være noe for deg!
En kortere versjon av Pythonkoden over, men litt mindre leselig. Denne har også færre systemkall. Det finnes sikkert en måte å få det like/mer kompakt på uten å bruke en lambda funksjon, men jeg kom ikke på noen.

Kode

with open('some_file.txt') as f:
    print '\n'.join((lambda x: [x[i:i+12] for i in xrange(10, len(x), 12)])(f.read()))
Sist endret av Akinakes; 13. desember 2011 kl. 21:47.
En kortere versjon av Pythonkoden over, men litt mindre leselig. Denne har også færre systemkall. Det finnes sikkert en måte å få det like/mer kompakt på uten å bruke en lambda funksjon, men jeg kom ikke på noen.
Vis hele sitatet...
Ja helt grei den,må si at este sin kode er enklere og lese ja.
Kan skrive den om litt og bruke en funksjon og droppe lambda.
Dette gjør koden mere fleksibel og med litt klarere varible navn er det lettere og se hva denne koden gjør.

Kode

def string_chunk(file_in, start, chunk):
    with open(file_in) as f:
        data = f.read()
        return '\n'.join(data[i:i+chunk] for i in xrange(start,len(data),chunk))

file_in = 'some_file'
print string_chunk(file_in, 10, 12)
Sist endret av snippsat; 13. desember 2011 kl. 23:37.
Ja helt grei den,må si at este sin kode er enklere og lese ja.
Kan skrive den om litt og bruke en funksjon og droppe lambda.
Dette gjør koden mere fleksibel og med litt klarere varible navn er det lettere og se hva denne koden gjør.
Vis hele sitatet...
Var ikke meningen at koden skulle være lett å lese. Jeg prøvde å løse det på så få linjer som mulig. Det mest oversiktlige er vel å lage en generator:

Kode

def chunk(L, start, step):
    for i in xrange(start, len(L), step):
        yield L[i:i+step]
        
with open('some_file.txt') as f:
    print '\n'.join(chunk(f.read(), 10, 12))
Eventuelt hvis man ikke bryr seg om antall systemkall:

Kode

with open('some_file.txt') as f:
    file = f.read()
    for i in xrange(10, len(file), 12):
        print file[i:i+12]
Men dette er uansett mer eller mindre samme løsning. Hvis man ser bort fra import så er dette en kortere, men mindre effektiv løsning:

Kode

from re import findall

with open('some_file.txt') as f:
    print '\n'.join(findall(r'.{1,12}',f.read()[10:]))