Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Парсинг строки. Запись слов в переменные. 
:(
    Опции темы
iddqd
Дата 8.6.2006, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: 0
Всего: 2



Есть структура:
Код

  TJobItem = record
    ID: string;
    Small_ID: string;
    Photo: string;
    Sign: string;
    FName: string;
    LName: string;
    OName: string;
  end;

Есть текстовый файл, в котором данные хранятся в таком виде:
Код

9643909001014889966 964390900101488996611010090 16 9643909001014889966_photo.bmp 9643909001014889966_sign.bmp АЛЕШКИНА ЛЮДМИЛА ДМИТРИЕВНА             ALE[KINA L^DMILA DMITRIEWNA XX
9643909001014961187 964390900101496118711010090 16 9643909001014961187_photo.bmp 9643909001014961187_sign.bmp АЛИФАНОВА РАИСА КОНСТАНТИНОВНА          ALIFANOWA RAISA KONSTANTINOWNA XX
9643909001023160987 964390900102316098711020090 16 9643909001023160987_photo.bmp 9643909001023160987_sign.bmp АЛЕКСЕЕВА АНТОНИНА НИКИТИЧНА            ALEKSEEWA ANTONINA NIKITIQNA X


Все записи без переносов.
Мне необходимо записать некоторые из этих полей в переменные из вышеприведённой структуры.
Итак, рассмотримм запись:
9643909001014889966 964390900101488996611010090 16 9643909001014889966_photo.bmp 9643909001014889966_sign.bmp АЛЕШКИНА ЛЮДМИЛА ДМИТРИЕВНА             ALE[KINA L^DMILA DMITRIEWNA XX

В ней:
Выделеное синим цветом в переменную ID;
... оранжевым - Small_ID;
... красным - Photo;
... зеленый - Sign;
А ФИО, написанные по-русски записать соответсвенно в переменные FName, LName, OName;

Помогите пожалуйста с решением вопроса, а то уже голову себе сломал :\
Написал регулярное выражение, теперь не знаю, как раскидать по переменным, нашёл только функцию замены.
Может кто-нибудь поможет непосредственно примером, а то полный алгоритм в голове есть, а реализовать не могу smile 


--------------------
PM MAIL   Вверх
FRAGNATIC
Дата 9.6.2006, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: 6
Всего: 11



ну разбей строку на слова) темболее что выходит в качестве разделителя идёт пробел
Delphi сейчас не установлена, поэтому ед чем могу помочь, так это загляни или в FAQ или на DelphiWord примеров функции по загону строки в стринглист КУЧА =)
так что даже есть выбор что тебе заюзать в своих целях лучше =) 
PM MAIL   Вверх
Romikgy
Дата 9.6.2006, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Код

procedure TForm1.Button1Click(Sender: TObject);
var sx:string;
  struc:TJobItem;
  sl: TStringList;
begin
 sx:='9643909001014889966 964390900101488996611010090 16 9643909001014889966_photo.bmp 9643909001014889966_sign.bmp ÀËÅØÊÈÍÀ ËÞÄÌÈËÀ ÄÌÈÒÐÈÅÂÍÀ             ALE[KINA L^DMILA DMITRIEWNA XX';
 sl:=TStringList.Create;
 sl.Delimiter:=' ';
 sl.DelimitedText:=sx;
 struc.ID:=sl[1];
 struc.Small_ID:=sl[2];
 struc.Photo:=sl[3];
 struc.Sign:=sl[4];
 struc.FName:=sl[5];
 struc.LName:=sl[6];
 struc.OName:=sl[7];

 sl.Free;
 Form1.Caption:=struc.FName;
end;
 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ShadeSt
Дата 9.6.2006, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 9.8.2005
Где: Россия, г. Ставро поль

Репутация: нет
Всего: 7



Код

procedure TForm1.Button1Click(Sender: TObject);
type
 TJobItem = record
    ID: string;
    Small_ID: string;
    Photo: string;
    Sign: string;
    FName: string;
    LName: string;
    OName: string;
  end;

  function GetToken(var aStr : string; const aSeparator : Char) : string;
  var
    p : Integer;
  begin
    p := Pos(aSeparator, aStr);
    if (p = 0) then p := Length(aStr);
    Result := Trim(Copy(aStr, 1, p));
    Delete(aStr, 1, p);
  end;

var
  s       : string;
  JobItem : TJobItem;
begin
  s := '9643909001014889966 964390900101488996611010090 16 9643909001014889966_photo.bmp 9643909001014889966_sign.bmp АЛЕШКИНА ЛЮДМИЛА ДМИТРИЕВНА             ALE[KINA L^DMILA DMITRIEWNA XX';
  GetToken(S, ' ');
  JobItem.ID       := GetToken(S, ' ');
  JobItem.Small_ID := GetToken(S, ' ');
  JobItem.Photo    := GetToken(S, ' ');
  JobItem.Sign     := GetToken(S, ' ');
  JobItem.FName    := GetToken(S, ' ');
  JobItem.LName    := GetToken(S, ' ');
  JobItem.OName    := GetToken(S, ' ');
  ShowMessage('111');
end;

 


--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
iddqd
Дата 9.6.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: 0
Всего: 2



Делаю так:
Код

function TJob.FillSelf: boolean;
var
 ts, st: TStringList;
 i: integer;
begin
 ts:=TStringList.Create;
 st:=TStringList.Create;
 ts.LoadFromFile(DBPath); //тут путь передаётся верно
 SetLength(Items, ts.Count);//ts.Count = 141, но длина выставляется странно, а отладчике показывает как-будто первых 4-х итемов в массиве Items просто нет :\
 st.Delimiter:=' ';
for i := 0 to ts.Count - 1 do begin
 st.DelimitedText:=ts.Strings[i];
 Items[i].ID:=st[1]; //и тут вылетает ошибка... не могу понять её происхождение, помогите, пожалуйста
 Items[i].Small_ID:=st[2];
 Items[i].Photo:=st[3];
 Items[i].Sign:=st[4];
 Items[i].FName:=st[5];
 Items[i].LName:=st[6];
 Items[i].OName:=st[7];
end;
st.Free;
ts.Free;
end;
 


--------------------
PM MAIL   Вверх
ShadeSt
Дата 9.6.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 9.8.2005
Где: Россия, г. Ставро поль

Репутация: нет
Всего: 7



По идее все верно..
Что за ошибка? 

Код

var
  Items : Array Of  TJobItem;

??? 

Это сообщение отредактировал(а) ShadeSt - 9.6.2006, 11:25


--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0676 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.