![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
ЗдрасьТе!!! Сразу к делу, у меня случилось беда, т. к. я начинающий программист на Delphi. На работе мне задали задачку прочитать текстовый файл по позициям определенно установленным, и засунуть их в Exel
. Сколько читал литературы, искал в инете ни чего похожего не нашел!!! Или если я совсем лаймер ткните палецем где надо читать!!!Заранее Спасибо!!! |
|
#2
|
|||
|
|||
|
Чтение - считываешь в TStringList, далее разбираешь. Какие признаки позиции?
Запись - см в ФАКе работу с Экселем через OLE-автоматизацию. |
|
#3
|
|||
|
|||
|
Я конечно может и чайник, но что имеешь в виду под словами признаки позиции???
|
|
#4
|
|||
|
|||
|
"что имею, то и введу" (с)
![]() как определяются позиции данных в текстовом файле? Заранее известны или определяются каким-либо спецсимволом? |
|
#5
|
|||
|
|||
|
Да известны. Но только в тексте идут только цифры вот их мне и надо вставить, пример откуда надо взять данные вот:
00022008543454334544335435435354353435...максималь но 1433 символа 00022008435434958349504390349304894090...максималь но 1433 символа и надо взять данные из первой строки с 5 позиции по 8??? и засунуть их в Exel(ну это ты уже сказал как делать и за это спасибо!!! ). |
|
#6
|
|||
|
|||
|
Только из первой строки с 5 ао 8 позиции включительно. Так?
|
|
#7
|
|||
|
|||
|
Вот в том то и дело что строк может быть бесконечно!!! И я для примера привел только один такой запрос 5 по 8, а так их тоже очень много!!!
|
|
#8
|
|||
|
|||
|
Так сколько строк из файла надо обрабатывать?
|
|
#9
|
|||
|
|||
|
Все но примерно максимальное количество может доходить до 10000!!! Во как
|
|
#10
|
|||
|
|||
|
OK. вот код, который читает файл в через callback возвращает выреанные подстроки (с 5 по 8 позиции включительно). Если будут проблемы с подключением, то пиши.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TDataCallBack = procedure (AData : String) of object;
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure DataCallBack(AData : String);
public
{ Public declarations }
procedure ReadDataFromFile(AFileName : String; ACallBack : TDataCallBack = Nil);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.DataCallBack(AData: String);
begin
Memo1.Lines.Add(AData);
end;
procedure TForm1.ReadDataFromFile(AFileName: String;
ACallBack: TDataCallBack);
var
F : TextFile;
Buf : String;
begin
If (@ACallBack = Nil) Or (Not FileExists(AFileName)) Then Exit;
AssignFile(F,AFileName);
Reset(F);
While Not Eof(F) Do
Begin
ReadLn(F,Buf);
If Length(Buf) >= 8 Then
ACallBack(Copy(Buf,5,4));
End;
CloseFile(F);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
If OpenDialog1.Execute Then
Begin
Memo1.Lines.Clear;
ReadDataFromFile(OpenDialog1.FileName,DataCallBack);
End;
end;
end. |
|
#11
|
|||
|
|||
|
СПАСИБОЧКИ!!! А можно еще один вопрос, а если таких с 5 по 8 или допустим с 10 по 16, это для каждой другой позиции писать отдельный код???
|
|
#12
|
|||
|
|||
|
Если тебе одновременно надо и то, и то, то можно расширить этот код.
Если в звисимости от файла, то надо где-то вводить эти позиции и переписать выделение на переменные. |
|
#13
|
|||
|
|||
|
А все понял!!! Ты меня выручил еще раз СпаСибо!!!
|