|
29.01.2008, 10:41 | #1 |
Участник
|
все равно не работает сделал вот так, ка и вы
IF CommonDlgMgt.OpenFileEx('Îòêðûòèå ýëåêòðîííîé íàêëàäíîé','',TextFilter,1) THEN BEGIN IF NOT FILE.EXISTS(CommonDlgMgt.GetPath + CommonDlgMgt.GetFileName) THEN MESSAGE('Ôàéë ' + CommonDlgMgt.GetFileName + ' íå íàéäåí!') ELSE BEGIN f.TEXTMODE(TRUE); f.OPEN(CommonDlgMgt.GetPath + CommonDlgMgt.GetFileName); f.CREATEINSTREAM(StreamInObj); i := 1; WHILE NOT (StreamInObj.EOS()) DO BEGIN StreamInObj.READTEXT(buffer); s2:=Explode(buffer,2); MESSAGE('Line No. %1 %2', i , s2); //ïîêàçàòü âòîðîå ïîëå i := i + 1; END; f.CLOSE(); END; END; Explode(Buffer : Text[1024];Number : Integer) s2 : Text[1024] FOR i:=1 TO Number DO BEGIN s2:=COPYSTR(Buffer,1,STRPOS(Buffer,';')-1); Buffer:=COPYSTR(Buffer,STRPOS(Buffer,';')+1); END; может неправильно открываю файл? |
|
29.01.2008, 10:51 | #2 |
Участник
|
Несмотря на то, что в строке все время гарантированно есть необходимое число точек с запятой я бы обработал ситуацию, когда по каким-либо причинам точка с запятой не нашлась ... То есть взял бы под IF строку STRPOS(Buffer,';')
|
|
29.01.2008, 11:04 | #3 |
Участник
|
Цитата:
FOR i:=1 TO Number DO BEGIN s2:=COPYSTR(Buffer,1,STRPOS(Buffer,';')-1); Buffer:=COPYSTR(Buffer,STRPOS(Buffer,';')+1); END; галочку в Var то поставил. все равно дает ошибку |
|