Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.11.2008, 20:11
donald1dack donald1dack вне форума
Прохожий
 
Регистрация: 26.11.2008
Сообщения: 20
Репутация: 10
Вопрос Чтение текстового файла по позициям и запись их в Exel

ЗдрасьТе!!! Сразу к делу, у меня случилось беда, т. к. я начинающий программист на Delphi. На работе мне задали задачку прочитать текстовый файл по позициям определенно установленным, и засунуть их в Exel . Сколько читал литературы, искал в инете ни чего похожего не нашел!!! Или если я совсем лаймер ткните палецем где надо читать!!!
Заранее Спасибо!!!
Ответить с цитированием
  #2  
Старый 28.11.2008, 21:11
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Чтение - считываешь в TStringList, далее разбираешь. Какие признаки позиции?
Запись - см в ФАКе работу с Экселем через OLE-автоматизацию.
Ответить с цитированием
  #3  
Старый 28.11.2008, 21:14
donald1dack donald1dack вне форума
Прохожий
 
Регистрация: 26.11.2008
Сообщения: 20
Репутация: 10
По умолчанию

Я конечно может и чайник, но что имеешь в виду под словами признаки позиции???
Ответить с цитированием
  #4  
Старый 28.11.2008, 21:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

"что имею, то и введу" (с)

как определяются позиции данных в текстовом файле? Заранее известны или определяются каким-либо спецсимволом?
Ответить с цитированием
  #5  
Старый 28.11.2008, 21:31
donald1dack donald1dack вне форума
Прохожий
 
Регистрация: 26.11.2008
Сообщения: 20
Репутация: 10
По умолчанию

Да известны. Но только в тексте идут только цифры вот их мне и надо вставить, пример откуда надо взять данные вот:
00022008543454334544335435435354353435...максималь но 1433 символа
00022008435434958349504390349304894090...максималь но 1433 символа
и надо взять данные из первой строки с 5 позиции по 8??? и засунуть их в Exel(ну это ты уже сказал как делать и за это спасибо!!! ).
Ответить с цитированием
  #6  
Старый 28.11.2008, 21:49
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Только из первой строки с 5 ао 8 позиции включительно. Так?
Ответить с цитированием
  #7  
Старый 28.11.2008, 21:54
donald1dack donald1dack вне форума
Прохожий
 
Регистрация: 26.11.2008
Сообщения: 20
Репутация: 10
По умолчанию

Вот в том то и дело что строк может быть бесконечно!!! И я для примера привел только один такой запрос 5 по 8, а так их тоже очень много!!!
Ответить с цитированием
  #8  
Старый 28.11.2008, 21:55
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Так сколько строк из файла надо обрабатывать?
Ответить с цитированием
  #9  
Старый 28.11.2008, 22:04
donald1dack donald1dack вне форума
Прохожий
 
Регистрация: 26.11.2008
Сообщения: 20
Репутация: 10
По умолчанию

Все но примерно максимальное количество может доходить до 10000!!! Во как
Ответить с цитированием
  #10  
Старый 28.11.2008, 22:21
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

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  
Старый 28.11.2008, 22:31
donald1dack donald1dack вне форума
Прохожий
 
Регистрация: 26.11.2008
Сообщения: 20
Репутация: 10
По умолчанию

СПАСИБОЧКИ!!! А можно еще один вопрос, а если таких с 5 по 8 или допустим с 10 по 16, это для каждой другой позиции писать отдельный код???
Ответить с цитированием
  #12  
Старый 28.11.2008, 22:35
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если тебе одновременно надо и то, и то, то можно расширить этот код.
Если в звисимости от файла, то надо где-то вводить эти позиции и переписать выделение на переменные.
Ответить с цитированием
  #13  
Старый 28.11.2008, 22:41
donald1dack donald1dack вне форума
Прохожий
 
Регистрация: 26.11.2008
Сообщения: 20
Репутация: 10
По умолчанию

А все понял!!! Ты меня выручил еще раз СпаСибо!!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:13.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter