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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.05.2012, 15:30
tabivan tabivan вне форума
Прохожий
 
Регистрация: 04.05.2012
Сообщения: 5
Репутация: 10
По умолчанию Помогите написать конвертор

Помогите написать конвертер. Приведенный ниже код работает только если строка не больше 200 символов.
Нужно из файла все что располагается между / / записать в массив.

Код:
if form1.OpenDialog1.Execute then fname:=form1.OpenDialog1.FileName;

TStr := TStringList.Create;
  try
    TStr.LoadFromFile(fname);
      for t:=0 to TStr.Count-1 do
        begin
        str:=TStr.Strings[t];

k:=1;
a:='';
for i:=1 to length(str) do
 begin
   if str[i]<>'/' then a:=a+str[i] else
   begin
   m[k]:=a;
   Inc(k);
   a:='';
   end;
 end;

m[k]:=a;

Последний раз редактировалось Aristarh Dark, 04.05.2012 в 15:32.
Ответить с цитированием
  #2  
Старый 04.05.2012, 16:29
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Запихиваем весь файл в одну строку, затем как-то так:
Код:
uses StrUtils;
...
CopyStart:=Pos('/',str);
CopyEnd:=PosEx('/', str, CopyStart+1);
S := Copy(str, CopyStart+1, CopyEnd-CopyStart-1);
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 04.05.2012, 16:59
tabivan tabivan вне форума
Прохожий
 
Регистрация: 04.05.2012
Сообщения: 5
Репутация: 10
По умолчанию

Спасибо Ваш код намного меньше.

Но у меня проблема в том что когда использую переменную String обрезается часть текста

TStr.LoadFromFile(fname); //- строка 1000 символов
for t:=0 to TStr.Count-1 do
begin
str:=TStr.Strings[t]; //- строка 250 символов

в итоге часть текста пропадает

Последний раз редактировалось tabivan, 04.05.2012 в 17:01.
Ответить с цитированием
  #4  
Старый 04.05.2012, 17:01
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Если TStr - это TStringList то он разбивает текст на строки по #13 и еще если встречается символ #0 - то он интерпретируется как конец строки.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #5  
Старый 04.05.2012, 17:25
robt robt вне форума
Активный
 
Регистрация: 17.02.2011
Сообщения: 298
Репутация: -1806
По умолчанию

Цитата:
Сообщение от Aristarh Dark
если встречается символ #0 - то он интерпретируется как конец строки.
не, для строки это не является концом,а для Pchar\Pwidechar да
Ответить с цитированием
  #6  
Старый 04.05.2012, 17:29
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Сообщение от robt
не, для строки это не является концом,а для Pchar\Pwidechar да
попробуй вот такой код
Код:
var
  s:string;
begin
  s:='asdasdasdasd'#0'asdkahsdlkhasdааа';
  ShowMessage(s);
end;
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #7  
Старый 04.05.2012, 17:25
tabivan tabivan вне форума
Прохожий
 
Регистрация: 04.05.2012
Сообщения: 5
Репутация: 10
По умолчанию



(((1111111;;1111;22/02пппппп/03ппппппп/04аааааа/0519791215/068401052537/07аааааа;аааа;аааааа;аааааа;/08ааааа;ааааа;аааааа;ааааа;-;-;-;-/09ааааааааааа;ааааааааааа;аааааааа;аааааааааааа;-;-;-;-2225/2383160/2420080520/27118470/3049/314/332/4322802/4463/4514/ааааааааааааааааааааааааааааааааааааааааааааааа/6120080518/аааааааааааааааааааааааааааааааааааааааааа;-;-;-;-781/79аааааааааааааааааааааааааааааааааааааааа,22041/99вввв=34157702)))
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter