![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
формат 1С [D7, XP]
rosl © (2006-07-20 10:05:00)нужно принять данные из структурированного файла (1С)
например:
Иванов|Иван|Иванович
нужно записать его в файл dbf
field1 field2 field2
Иванов Иван Иванович
вобщем как пробежать по строке. разделитель "полей" занк |
ORMADA (2006-07-20 13:42:00) [1]заюзай из джеди JvCsvDataSet поставив в качестве разделителя "|"
и работай как с обычной таблой
IceBeerg (2006-07-20 12:56:00) [2]
> 2 Virgo_Style © (20.07.06 11:29) [2]
Не, туа нада вместо разделителя ставить #13#10, а патом в StringList построчно загружать и юзать...
ORMADA (2006-07-20 12:15:00) [3]ужас!
а чё не в формате csv .. разницы никакой зато можно было бы без выкрутасов использовать....
лучше конечно xml или на крайняк dfb:(
p.s. бедные люди у которых работает такой программер... моя плакаль
dolmat (2006-07-20 12:07:00) [4]function NextSubStr(Const SubStr,Str : String; PrevIdx : Integer):Integer;
begin
if (PrevIdx<=Length(Str)) and (PrevIdx>0) then Result := pos(SubStr,PChar(@Str[PrevIdx]))+PrevIdx-1 else Result := 0;
end;
assignfile(f,'\\Dubovik\c\scclient\POST\INFO\'+SearchRec.Name);
reset(f);
readln(f,s);
k:=0;
for i:=1 to 2 do k :=NextSubStr(',',s,k+1);
s1:=copy(s,k+1,10);
delete(s1,3,1);
insert('.',s1,3);
delete(s1,6,1);
insert('.',s1,6);
datpl:=strtodate(s1); //data oplat
while not eof(f) do begin
readln(f,s);
table1.append;
k:=0;
for i:=1 to 4 do begin k :=NextSubStr(',',s,k+1);
case i of
1: begin sc:=copy(s,1,k-1); testscet;Table1SCET.asstring:=sc; end;
2: k1:=k;
3: begin s1:=copy(s,k1+1,k-k1-1); Table1OPL.asfloat:=strtofloat(s1); k1:=k; end;
4: begin s1:=copy(s,k1+1,k-k1-1); Table1PENI.asfloat:=strtofloat(s1); k1:=k; end;
end;
end;
Table1DATA_OPL.AsDateTime:=datpl;
table1.post;
end;
closefile(f);
erase(f);
Virgo_Style (2006-07-20 11:29:00) [5]Если данные пишутся в базу запросами, и их не очень много - т.е. допустимо динамическое формирование запроса, без параметров - то можно ReplaceStr, примерно так:
ValuesStr:=''''+StringReplace( SourceStr ,'|',''',''',[rfReplaceAll])+'''';:
Иванов|Иван|Иванович -> 'Иванов','Иван','Иванович'
tesseract (2006-07-20 11:18:00) [6]PosEx.