Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
Avatar
Karel Mašek
Člen
Avatar
Karel Mašek:28.3.2018 14:33

Zdarec, mám dotaz.
Potřebuji načítat data ze souboru. A představoval jsem si to takto,
že si načtu konkrétní řádek a na něm budou hodnoty, třeba oddělené čárkou.
A tyto hodnoty si načtu do proměnné. A pak s nimi budu pracovat.
Ale nevím jak načítat ty hodnoty ze souboru.
Poraďte. Díky

 
Odpovědět 28.3.2018 14:33
Avatar
Odpovídá na Karel Mašek
Michael Škrášek:28.3.2018 19:23

Kód pro čtení ze souboru:

path = "file.txt"
index = 0
line = "0"
While line <> ""
  line = File.ReadLine(path, index)

  ...

  index = index + 1
EndWhile
Nahoru Odpovědět 28.3.2018 19:23
I choose a lazy person to do a hard job. Because that person will find an easy way to do it ... Bill Gates
Avatar
Karel Mašek
Člen
Avatar
Karel Mašek:11.4.2018 7:16

Díky za nápovědu.
A nevíš jak načítat data, které jsou na řádku nějak oddělené, třeba čárkou.
Zatím to řeším tak, že načítám z pozice na řádku a pak zase ukládám na přesnou pozici.

 
Nahoru Odpovědět 11.4.2018 7:16
Avatar
Odpovídá na Karel Mašek
Michael Škrášek:11.4.2018 15:04

Jde to celkem jednoduše ... v kombinaci s čtením souboru se to dá uložit do 2D pole třeba takhle:

spliter = ";"
path = "file.txt"
index = 0
line = "0"
While line <> ""
  line = File.ReadLine(path, index)

  split_index = -1
  i = 0
  While split_index <> 0
    split_index = Text.GetIndexOf(line, spliter)
    If split_index = 0 Then
      value = line
    Else
      value = Text.GetSubText(line, 1, split_index - 1)
      line = Text.GetSubText(line, split_index + 1, Text.GetLength(line) - split_index)
    EndIf

    TextWindow.WriteLine(value)
    data[index][i] = value
    i = i + 1
  EndWhile

  index = index + 1
EndWhile

kde 'index' je číslo řádku a 'i' je číslo sloupce ... ukládání určitě vymyslíš ;)

ale asi nejlepší způsob bude ukládat a načítat přímo pole ... jelikož ve SmallBasic je pole text ve tvaru:

0=index 0;1=index 1;2=nejakej text;3=atd;

ale je to na tobě

Nahoru Odpovědět 11.4.2018 15:04
I choose a lazy person to do a hard job. Because that person will find an easy way to do it ... Bill Gates
Avatar
Karel Mašek
Člen
Avatar
Karel Mašek:12.4.2018 14:23

úplně jednoduché, díky.
A co znamená tady toto? 0=index 0;1=index 1;2=nejakej text;3=atd;

 
Nahoru Odpovědět 12.4.2018 14:23
Avatar
Odpovídá na Karel Mašek
Michael Škrášek:12.4.2018 18:20

Je to vpodastatě 1řádkovej zápis pole ...

data = "0=index 0;1=index 1;2=nejakej text;3=atd;"

je ekvivalent pro:

data[0] = "index 0"
data[1] = "index 1"
data[2] = "nejakej text"
data[3] = "atd"

a proto ho můžeš takto ukládat do souboru, nebo načítat :)

Nahoru Odpovědět 12.4.2018 18:20
I choose a lazy person to do a hard job. Because that person will find an easy way to do it ... Bill Gates
Avatar
Karel Mašek
Člen
Avatar
Odpovídá na Michael Škrášek
Karel Mašek:9. dubna 11:51

Zdarec, mám dotaz
v souboru mám data, jsou to čísla, načtu je do pole.
Chci s nimi pracovat jako s čísly, ale chová se to jako text. Jak převést text na číslo?
Díky

 
Nahoru Odpovědět 9. dubna 11:51
Avatar
Odpovídá na Karel Mašek
Michael Škrášek:9. dubna 13:30

Přijde mi divné, že se chová jako text ... to by určitě nemělo. Small Basic automaticky pracuje s číslem.

př.

a = "1" //uložené jako text
TextWindow.WriteLine(a + 10) //vypíše 11

Tento kód vypíše 11 i přes to, že 'a' je uloženo jako text.

Editováno 9. dubna 13:33
Nahoru Odpovědět 9. dubna 13:30
I choose a lazy person to do a hard job. Because that person will find an easy way to do it ... Bill Gates
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.