ziom32
(Ziom32)
#1
Witam.
Mam program z 6-kolumnowym StringGridem. StringGrid jest postaci: http://img179.imageshack.us/img179/2679 … ridha8.png
W programie jest funkcja zapisu do pliku tekstowego ale potrzebuję również odczytu.
Zapisany tekst wygląda tak:
Lp.1, Nazwa: xxx, Ilosc: 2, Cena Netto[zł]: 11, Podatek: 3%, Cena Brutto[zł]: 22,66
Wszystko kończy się na tym, że wczytam tekst z tego pliku do Memo.
Jak mam przepisać poszczególne wartości z Memo do kolumn ze StringGrida?
Z góry dziękuję za pomoc.
jeżeli zapisałbyś plik txt tylko parametrami to bez problemu można odczytac parametr 1,2,3,4 z pliku a poźniej wstawić go na odpowiednie współrzedne w
gridzie , z tego co kojarze w builderze można zapisać też strukture grida jako obiekt txt i potem go odczytać ale nie jestem pewien.
ziom32
(Ziom32)
#3
Aha. Ale ja muszę zrobić wczytywanie właśnie z tak zapisanego pliku :? . Jak to zrobić?
ziom32
(Ziom32)
#5
A mógłbyś to przykładowo zapisać do Lp. bo wiem wiem o co Ci chodzi ale nie bardzo wiem jak się do tego zabrać.
_alex
([alex])
#6
Nie podałeś języka programowania
Sorka, już widzę:
AnsiString Parse(AnsiString &buf,const AnsiString &delim)
{
int P=buf.Pos(Delimeter);
AnsiString Result;
if(P>0) { Result=buf.Copy(1,P-1); buf.Delete(1,P+delim.Length()-1); }
else { Result=buf; buf.SetLength(0); }
return Result;
}
AnsiString buf=...;
while(buf.Length()>0)
{
AnsiString row=Parse(buf,"\r\n");
Parse(row,"Lp.");
AnsiString Lp=Parse(row,",");
Parse(row,"Nazwa: ");
AnsiString Nazwa=Parse(row,",");
Parse(row,"Cena Netto[zł]: ");
AnsiString Netto=Parse(row,",");
Parse(row,"Ilosc: ");
AnsiString Ilosc=Parse(row,",");
...
}
W tej chwili nie mam jak skompilować, więc mogą być drobne błędy.
ziom32
(Ziom32)
#7
W temacie zapisane jest [C++].
_alex
([alex])
#8
Zamiast:
AnsiString Lp=Parse(row,",");
można spróbować:
int Lp=Parse(row,",").ToIntDef(-1); // jeżeli jest liczba to skonwertuje, w przeciwnym przypadku będzie -1;
Zamiast:
AnsiString Netto=Parse(row,",");
można spróbować ( ToDoubleDef() - nie istnieje ) :
double Netto=-1; try { Netto=Parse(row,",").ToDouble(); } catch(...) {}
ale raczej tego nie potrzebujesz ponieważ do stringgrida i tak napisy wkładasz.