Текущий архив: 2002.08.29;
Скачать: CL | DM;
ВнизНужно скопировать из текст.файла в таблицу dbf значения... Найти похожие ветки
← →
Ангелика (2002-08-09 15:38) [0]Уважаемые мастера! Буду очень благодарна, если кто-нибудь поможет разобраться. Нужно скопировать из текст.файла строку, разбить на составляющие подстроки и их записать в соответствующие поля таблицы dbf. После исполнения нижеследующего кода в таблице поля оказываются пустыми, за исключением поля Summa, где для всех записей записано значение "0.00". Не подскажете, в чем тут дело?
procedure TForm1.SpeedButtonClick(Sender: TObject);
var Ft1: Textfile;
s : string;
sInterval, sPhone, sPhoneOld : string[7];
sDate: string[16];
sKod : string[10];
sBphone : string[15];
sSumma : string[14];
nsSumma : real;
sTariff : string[12];
pp,ii:byte;
begin
aa.Active := True;
aa.Append;
aa.First;
assignFile(Ft1,"53609.txt");
reset(Ft1);
while not EOF(Ft1) do
begin
readln(Ft1,s); // здесь значение Watch List
// становится равным s=#$1A
// и больше не меняется
aa.Edit;
sPhone:=(copy(s,1,7));
aa.FieldValues["phone"]:= sPhone;
sDate:=copy(s,32,5)+copy(s,42,6);
aa.FieldValues["call_date"]:=sDate;
sKod:=copy(s,49,10);
aa.FieldValues["kod"]:=sKod;
sBphone:=copy(s,80,15);
aa.FieldValues["bphone"]:=sBphone;
sInterval:=copy(s,111,7);
aa.FieldValues["interval"]:=sInterval;
sTariff:=copy(s,124,10);
aa.FieldValues["tariff"]:=sTariff;
sSumma:=trim(copy(s,133,10));
PP:=Pos(",",sSumma);
Delete(sSumma,PP,1);
Insert(".",sSumma,PP);
sSumma:=trim(sSumma);
nSsumma:=StrToFloat(sSumma);
aa.FieldValues["SUMMA"]:=nSsumma;
aa.Next;
end;
end;
← →
SaS13 (2002-08-09 15:42) [1]aa.Post
← →
Val (2002-08-09 15:52) [2]>SaS13 © (09.08.02 15:42)
пост произойдет при переходе от записи к записи.
>Ангелика (09.08.02 15:38)
а у вас значения в ваших переменных до вставки есть?
← →
Ангелика (2002-08-09 15:54) [3]Спасибо за отклик!
Добавила
aa.Post
Теперь в выходной таблице в поле Summa появились значения "0"
Наверное что-то еще не так...
← →
ZrenBy (2002-08-09 15:58) [4]readln(Ft1,s); // здесь значение Watch List
// становится равным s=#$1A
// и больше не меняется
Конечно s - пустое
Что есть Ft1 ?
← →
SaS13 (2002-08-09 15:59) [5]procedure TForm1.SpeedButtonClick(Sender: TObject);
var Ft1: Textfile;
s : string;
sInterval, sPhone, sPhoneOld : string[7];
sDate: string[16];
sKod : string[10];
sBphone : string[15];
sSumma : string[14];
nsSumma : real;
sTariff : string[12];
pp,ii:byte;
begin
aa.Active := True;
aa.Append; // - бессмысленно, след. оператор отменит
aa.First; // при открытии необязателен
assignFile(Ft1,"53609.txt");
reset(Ft1);
while not EOF(Ft1) do
begin
readln(Ft1,s); // здесь значение Watch List
// становится равным s=#$1A
// и больше не меняется
aa.Edit; // наверное Insert надо
sPhone:=(copy(s,1,7));
aa.FieldValues["phone"]:= sPhone;
sDate:=copy(s,32,5)+copy(s,42,6);
aa.FieldValues["call_date"]:=sDate;
sKod:=copy(s,49,10);
aa.FieldValues["kod"]:=sKod;
sBphone:=copy(s,80,15);
aa.FieldValues["bphone"]:=sBphone;
sInterval:=copy(s,111,7);
aa.FieldValues["interval"]:=sInterval;
sTariff:=copy(s,124,10);
aa.FieldValues["tariff"]:=sTariff;
sSumma:=trim(copy(s,133,10));
PP:=Pos(",",sSumma);
Delete(sSumma,PP,1);
Insert(".",sSumma,PP);
sSumma:=trim(sSumma);
nSsumma:=StrToFloat(sSumma);
aa.FieldValues["SUMMA"]:=nSsumma;
aa.Next; // а здесь Post
end;
end;
← →
Johnmen (2002-08-09 15:59) [6]aa.Append
aa.First;
aa.Next;
- выкинуть
вместо aa.Edit; - aa.Append; и после - aa.Post
(А вообще-то надо много и упорно читать книги...)
← →
Ангелика (2002-08-09 16:00) [7]>Val (09.08.02 15:52)
Нет в переменных до вставки значени нет. Значения в них считываются из текстового файла.
← →
Ангелика (2002-08-09 16:20) [8]>ZrenBy (09.08.02 15:58)
FT1 - переменная, ассоциированная с внешним текстовым файлом
>Johnmenn (09.08.02 15:59)
Насчет книг Вы, разумеется правы. Извините, что занимаю Ваше время, уверяю, только из необходимости получения быстрого результата.
Кстати, после всех манипуляций, предложенных Вами, результат, к сожалению не изменился.
← →
ZrenBy (2002-08-09 16:23) [9]Что за формат у "53609.txt" ?
Может ReadLn сразу натыкается на нечто ?
← →
Val (2002-08-09 16:23) [10]>Ангелика (09.08.02 16:00)
приведите получившейся код.
вы не поняли, я спрашиваю, значения из файла в переменные считываются нормально?
← →
Ангелика (2002-08-09 16:40) [11]>Val (09.08.02 16:23)
Из текстового файла строка считывается в переменную строковую переменную s. В этой переменной наблюдаю в WATCH LIST значение s=#$1A. Остальные переменные заполняю значениями посредством функции Copy(s,...,...).
Получившийся код
procedure TForm1.SpeedButtonClick(Sender: TObject);
var Ft1: Textfile;
s : string;
sInterval, sPhone, sPhoneOld : string[7];
sDate: string[16];
sKod : string[10];
sBphone : string[15];
sSumma : string[14];
nsSumma : real;
sTariff : string[12];
pp,ii:byte;
begin
aa.Active := True;
assignFile(Ft1,"53609.txt");
reset(Ft1);
while not EOF(Ft1) do
begin
readln(Ft1,s); // здесь значение Watch List
// становится равным s=#$1A
// и больше не меняется
aa.Append; // замена на Insert или Edit ничего не меняет
sPhone:=(copy(s,1,7));
aa.FieldValues["phone"]:= sPhone;
sDate:=copy(s,32,5)+copy(s,42,6);
aa.FieldValues["call_date"]:=sDate;
sKod:=copy(s,49,10);
aa.FieldValues["kod"]:=sKod;
sBphone:=copy(s,80,15);
aa.FieldValues["bphone"]:=sBphone;
sInterval:=copy(s,111,7);
aa.FieldValues["interval"]:=sInterval;
sTariff:=copy(s,124,10);
aa.FieldValues["tariff"]:=sTariff;
sSumma:=trim(copy(s,133,10));
PP:=Pos(",",sSumma);
Delete(sSumma,PP,1);
Insert(".",sSumma,PP);
sSumma:=trim(sSumma);
nSsumma:=StrToFloat(sSumma);
aa.FieldValues["SUMMA"]:=nSsumma;
aa.Post
end;
end;
> ZrenBy (09.08.02 16:23)
Файл текстовый, кажется создан под DOSом (это присылают из Телекома). Вообще-то сейчас они уже перешли на формат dbf, но у нас затребовали отчет за 2000 год, а раньше эта информация так не обрабатывалась, такой программы не было).
← →
Val (2002-08-09 16:43) [12]хм, так у вас считать из файла не выходит, а не в таблицу вставить.
← →
Leran2002 (2002-08-09 16:51) [13]
> Ангелика (09.08.02 16:40)
Удали из таблицы все записи, а затем запусти новый вариант, и посмотри будут ли записи в таблице... Мне кажется дело в
> Val © (09.08.02 16:43)
Страницы: 1 вся ветка
Текущий архив: 2002.08.29;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.007 c