Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

формат 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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо