Dobrý den, řešení je jako vždy několik, rozhodující je, s jakou proměnnou chcete pracovat (a to je nutné hodnotit zejména z hlediska velikosti zpracovávaných souborů a funkcionality, kterou má aplikace realizovat). V úvahu připadají např.: a) řetězec (triviální realizace, snadná implementace funkcí typu paste/cut, horší při raálných odezvách s většími soubory) b) nějaký vhodný typ kolekce či vlastní implementace zřetězeného seznamu (poněkud obtížnější realizace, možné dlouhé soubory a přitom velice rychlé zpracování) c) pole řetězců (obdoba b, ale značná časová náročnost při vkládání řádků,...) A ještě poznámka - co když uživatel při editaci smaže číslo řádku? ad a) 1 2 3 | Dim s as string
s=mujBox.text
Dim i as integer =0
|
a cyklus na rozebrání a složení bude vycházet z příkladu na konci tohoto příspěvku (jen se to nebude strkat do pole, ale do řetězce + to zmíněné číslování) 1 2 3 4 5 6 7 8 9 10 11 | Dim cil as sring= ""
Dim j as integer=0
Dim k as integer
do while s.indexof(vbcr,j)>-1
k=s.indexof(vbcr,j)
cil+=i & ": " & s.substring(j,k-j)
i++
j=k
loop
cil+=i & ": " s.substring(j)
mujBox.text=s
|
ad b) lze použít již existující kolekce nebo si vytvořit vlastní objekt zřetězeného seznamu (tj. objekt, který má hodnotu /tj. řádek, který Vás ve výpisu zajímá/, ukazuje na sobě předcházející objekt /řádek/ a po něm následující objekt). Výhoda je zřejmá - při listování, vkládání apod stačí jen projít potřebný počet záznamů, upravit případně odkazy...=> rychlost a přitom žádné omezení velikostí řetězce,... ad c)velmi zlehka nastřeleno: nejprve naplnění ze souboru: 1 2 3 4 5 6 7 8 9 10 11 | Dim a(1) as string
Dim i as integer =0
Dim st as streamRider( "c:\bla.txt" )
mujBox.text= ""
do while not st.endofstream
a(i)=st.readLine
i++
ReDim persistent A(i)
mujBox.text=i & ": " & a(i-1)
loop
st.close
|
'rozdělení řádků (bude to nutné trochu testovat na začátek a konec řádku, poslední řádek a pod... Prostě práce s indexy:-))): 1 2 3 4 5 6 7 8 9 10 11 12 13 | Dim a(1) as string
Dim i as integer =0
Dim s as string
Dim j as integer=0
Dim k as integer
do while s.indexof(vbcr,j)>-1
k=s.indexof(vbcr,j)
a(i)=s.substring(j,k-j)
i++
ReDim persistent A(i)
j=k
loop
a(i)=s.substring(j)
|
Snad v tom není moc chyb a překlepů :-)))
|