Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2007, 15:58   #1
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
Вопрос Обработка текста

Вобщем так : мне нужно реализовать простую обработку текста!
чтобы например текст из переменной типа Tstring например "10;5;Привет" (Безкавычек) разделялся на 3 переменные ! 1-вая типа integer (у меня 10) 2-я тоже integer (5) 3-я String(Привет).

Вот между ними какойнибудь знак разделитель... я например поставил ';' . Но чтобы процедура проверки и преобразования не нагружала комп т.к будет использоватся (если паможете канешо ) очень часто...


вот начало :
var
e,Msg:string;
MsgNumb,MsgCode:integer;
begin
e:='010;5;Привет';
...
...
...

В конце должно получится

Msg='Привет'
MsgCode='5'
MsgNumb='10'


У каво какие мысли ? напишите плс полностью
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 05.10.2007, 16:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Запросто: В цикле дозаписывай в i-й элемент массива очередной символ из строки пока не встретишь разделитель, тогда проанализишь записанное на то что это, число али неа. Ну и так до конца строки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.10.2007, 16:39   #3
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

Можно плс поподробнее. тоесть текст гатовый....плис
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 05.10.2007, 16:39   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот примерчик на раздумья:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Edit1: TEdit;
    procedure Edit1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);
var s:array of string;k,i:integer;ss:string;f:extended;
begin
i:=0;k:=1;
ss:=Edit1.Text; ListBox1.Items.Clear;
setlength(s,i+1);
//********** WHILE *********
while k<length(ss) do  begin
 if ss[k]=';' then begin
  inc(i);
  setlength(s,i+1);
  if TryStrToFloat(s[i-1],f) then begin
   ListBox1.Items.Add(s[i-1] + ' - число');
  end else
   ListBox1.Items.Add(s[i-1]+ ' - Строка'); inc(k);
 end;
 s[i]:=s[i]+ss[k];
 inc(k);
end;
//****** END WHILE *********  {}

end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.10.2007, 17:20   #5
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

а можно написать функцию
function(text:string);
---

---
---
1переменная:=элемент1.текст
2переменная:=элемент2.текст
3переменная:=элемент3.текст
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 05.10.2007, 19:25   #6
Surgeon
Форумчанин
 
Регистрация: 04.10.2007
Сообщений: 106
По умолчанию

Код:
function findNword(separator,inputstr:string;wordn:integer):string;
// параметры функции: 
// separator - символ-разделитель слов (последовательные разделители считаются одинм)
// inputstr - строка для анализа
// wordn - номер искомого слова
// функция возвращает слово с указанным номером (нумерация слов с нуля "0" ) 
var
secstr:string;
findedword:string;
StartW,endW,wNum,znum,i,k:integer;
begin
i:=0;
wnum:=0;
znum:=0;
startw:=0;
endw:=0;
inputstr:=trim(inputstr);
secstr:=inputstr+separator;
if wordn=0 then startw:=0
else
begin
while (i<length(secstr)-1)and(wnum<>wordn) do
begin
i:=i+1;
if (secstr[i+1]<>separator)and(secstr[i]=separator) then
begin
startw:=i;
wnum:=wnum+1;
end;
end;
end;
znum:=0;
k:=startw;
repeat
k:=k+1;
until (k>length(secstr)-1)or((secstr[k]<>separator)and(secstr[k+1]=separator));
endw:=k;
result:=copy(secstr,startw+1,endw-startw);
end;
 
function WordNumber(input,separator:String):integer;
//параметры функции:
//input - строка для анализа
// separator - символ разделяющий "слова"
// функция возвращает число слов в анализируемой строке
var
buf:string;
n,i:integer;
begin
input:=trim(input);
if input='' then result:=0
else
begin
n:=0;
while FindNWord(separator,input,n)=FindNWord(separator,input+' ~ ',n) do n:=n+1;
Result:=n; // отсчет слов начинается с 0!!!
end;
end;
функции использовать вместе т.к. вторая использует первую.
Дальше получив разбивку на слова начинаешь анализ, для чисел есть функция вроде TryStrToInt, вернет true если строку можно преобразовать в integer. А раз можно значит и преобразуй.
Хотя зависит от того что замышляешь.
Все не так плохо, как вам кажется, на самом деле все гораздо хуже.
http://delphiworld.narod.ru/dw.html - 5000 статей!!! удобный поиск, оффлайн сборник, рекомендую всем

Последний раз редактировалось Surgeon; 05.10.2007 в 19:31.
Surgeon вне форума Ответить с цитированием
Старый 05.10.2007, 20:46   #7
Илюха
Заблокирован
 
Регистрация: 29.09.2007
Сообщений: 106
По умолчанию

Скинь свой исходник на форум! То что у тебя получается
Илюха вне форума Ответить с цитированием
Старый 06.10.2007, 15:25   #8
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

Илюха ты мне ???
---
GAGARIN-NEW вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка текста JRcoker Общие вопросы Delphi 5 31.07.2008 23:35
обработка текста pvleo Фриланс 4 14.07.2008 05:19
Обработка текста Absent Помощь студентам 2 20.05.2008 23:17
Обработка текста Absent Помощь студентам 1 10.05.2008 19:56
Обработка текста. Посмотрите Absent Помощь студентам 3 09.04.2008 23:30