![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() доброго времени суток!
помогите пожалуйста новичку с решением задачи. задача такова: имеются StringGrid и текстовый файл следующего содержания ____________________________ ООО "василек",7712349578 ООО "здоровье",5046287439 ООО" ромашка",7733478323 ____________________________ Сохраняю StringGrid в текстовый фаил так: Код:
procedure TForm1.SpeedButton2Click(Sender: TObject); Var I : Byte; F : TextFile; S : String; begin AssignFile(F, 'Test.txt'); Rewrite(F); For I := 1 to StringGrid1.RowCount - 1 do Begin Writeln(F,StringGrid1.Cells[0,I] +','+StringGrid1.Cells[1,I]) end; CloseFile(F) end; а вот с загрузкой текстового фаила в StringGrid ни чего не выходит. пожалуйста подскажите хотя бы в каком направлении искать. Помогите пожалуйста, очень надо!!! Последний раз редактировалось Admin, 29.04.2010 в 22:05. |
#2
|
|||
|
|||
![]() Читаешь из файла стррку, потом находишь разделитель (ф-я Pos), потом "пилишь" ее на части (ф-я Copy), потом эти части пихаешь в StringGrid. Типа:
Код:
... ReadLn(F,S); StringGrid1.Cells[0,i] := Copy(S,1,Pos(',',S)-1); StringGrid1.Cells[2,i] := Copy(S,Pos(',',S)+1,Length(S)); // здесь маленький хак с кол-вом копируемых символов... |
#3
|
||||
|
||||
![]() Для удобной загрузки созранять лутче так
Код:
procedure TForm1.SpeedButton2Click(Sender: TObject); Var F : TextFile; begin AssignFile(F, 'Test.txt'); Rewrite(F); For I := 1 to StringGrid1.RowCount - 1 do Begin Writeln(F,StringGrid1.Cells[0,I]); Writeln(F,StringGrid1.Cells[1,I]); end; CloseFile(F) end; Код:
procedure TForm1.SpeedButton3Click(Sender: TObject); Var F : TextFile; begin AssignFile(F, 'Test.txt'); Reset(F); while not EOF(f) do Begin readln(F,StringGrid1.Cells[0,I]); readln(F,StringGrid1.Cells[1,I]); end; CloseFile(F) end; Не твори зла, и жизнь повернется к тебе передом ![]() |
#4
|
||||
|
||||
![]() Я бы порекоммендовал создать запись вида
Код:
type Tf : record Name : string[20];//размер обязателен Number : string[20]; end; var ff : file of Tf;//файл записей f : Tf;//переменная записи Код:
begin AssignFile(ff, 'Test.dat'); Rewrite(ff); For I := 1 to StringGrid1.RowCount - 1 do Begin f.Name := StringGrid1.Cells[0,I]; f.Number := StringGrid1.Cells[1,I]; Seek(ff, FileSize(ff)-1); Write(f); end; CloseFile(ff); end; Код:
begin AssignFile(ff, 'Test.dat'); Reset(ff); For I := 0 to FileSize(ff)-1 do Begin Seek(ff, i); read(f); StringGrid1.Cells[0,I] := f.Name; StringGrid1.Cells[1,I] := f.Number; end; CloseFile(ff); end; В начале был Бит, потом Байт и только потом появилось Слово... |
#5
|
|||
|
|||
![]() перепробовал все предложеные варианты не выходит
![]() толи лыжи не едут, толи у меня мозг перегорел от перегрузки. уже неделю загараю с этой загрузкой |
#6
|
|||
|
|||
![]() Ять!!! Вот народ ленивый пошел...
Код:
procedure TForm1.btLoadClick(Sender : TObject); var L : TStringList; I : Integer; begin L := TStringList.Create; L.LoadFromFile('test.txt'); StringGrid1.Rows := L.Count; StringGrid1.Cols := 2; For I := 0 To L.Count-1 Do Begin StringGrid1.Cells[0,i] := Copy(L[i],1,Pos(',',L[i])-1); StringGrid1.Cells[1,i] := Copy(L[i],Pos(',',L[i])+1,Length(L[i])); End; L.Free; end; |
#7
|
|||
|
|||
![]() lmikle спасибо!!!
остался единственный вопрос остался: как загружать первую по счету строку файла в первую строку StringGrid. пробовал менять эту строку Код:
For I := 0 To L.Count-1 Do а если не чего не менять грузиться с первой по счету строчки файла но с нулевой фиксированной строки StringGrid, и получается некрасиво. может кто подкинет идею, а лучше кодинг, а если с описанием буду очень благодарен. |
#8
|
|||
|
|||
![]() Догадайся сам. Решение очень простое.
Но тебе придется разобраться с нумераций ячеек в TStringGrid и строк в TStringList. |