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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2011, 14:50   #1
radiokarazinec
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 47
Восклицание Работа со строковыми данными: разделить строку на два числовых массива

Здравствуйте! Подскажите как можно реализовать: вот есть у меня текстовый файл для проекта, в нем две колонки данных и делитель 4 пробела, как мне сделать из него 2 массива данных. один массив - одна колонка данных, второй - вторая, а потом по ним построить график. Зараннее благодарю!
radiokarazinec вне форума Ответить с цитированием
Старый 20.02.2011, 15:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Запросто. считываешь ты из файла как?
Допустим в некую строку, а после
Код:
...
k:=pos(' ',s);
SetLength(a,Length(a)+1);a[high(a)]:=copy(s,1,k-1);delete(s,1,k);
SetLength(b,Length(b)+1);b[high(b)]:=trim(s);
...
Где k - integer; a,b :array of string s - очередная считанная строка
Понял мысль?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.02.2011, 16:08   #3
radiokarazinec
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 47
По умолчанию

а что это за код серым шрифтом?
radiokarazinec вне форума Ответить с цитированием
Старый 20.02.2011, 17:45   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а что это за код серым шрифтом?
не обращайте внимания - это скрипт криво распознал язык программирования и, соответственно, криво отобразил текст программы.
Это просто обычный код.

Нужно в цикле разделять строку:
Код:
for i:=1 to N do begin
  MasOdiv[i] := Copy(s, 1, Pos(' ',s)-1); 
  MasDva[i]  := Copy(s, Pos(' ', s)+1, Length(s)-Pos(' ',s));
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.02.2011, 18:40   #5
radiokarazinec
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 47
По умолчанию

Ребята а не можете код по подробнее, что-то я не пойму, первый раз такое попалось, как для чайника))) и что там с делетелем?
radiokarazinec вне форума Ответить с цитированием
Старый 20.02.2011, 19:07   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты свои наработки покажи. Ато все мы да мы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.02.2011, 19:19   #7
radiokarazinec
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 47
По умолчанию

ну хо.. вышлю куда нибудь ток там ток начало, потому что без этого дальше никак?
radiokarazinec вне форума Ответить с цитированием
Старый 20.02.2011, 19:37   #8
radiokarazinec
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 47
По умолчанию

вот ссылка на него
http://ifolder.ru/22010830
radiokarazinec вне форума Ответить с цитированием
Старый 21.02.2011, 22:09   #9
radiokarazinec
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 47
По умолчанию

ребята, ну подскажите плиз
radiokarazinec вне форума Ответить с цитированием
Старый 22.02.2011, 15:17   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

без проверки на правильность..
просто для затрвки:
Код:
procedure TFDataWindow.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
 Action:=CaFree;
end;

procedure TFDataWindow.FormActivate(Sender: TObject);
var
  i, j, K, nPoints, errCode : integer;
  s : string;
  d1, d2 : double;
  Arr1, Arr2: array of double;
  TS : TStringList;
begin
  TS := TStringList.Create();
  setlength(Arr1,0);
  setlength(Arr2,0);
  try
    TS.LoadFromFile('DataOfGeorad.txt');

    // найдём первую непустую строчку
    j := 0;
    while (j<=TS.Count-1) and (Length(Trim(TS.Strings[j]))=0) do inc(j);

    if (j<=TS.Count-1) then begin
       // если в 1-й непустой строчке есть текст //n points
       //   то прочитаем количество точек в переменную nPoints
       //  наверняка, эту переменную нужно испльзовать как счётчик,
       //   но в данном примере - эта переменная просто считывается из файла и
       //   дальше не используется! Думаю, что в настоящем файле - эта перменная
       //   определяет, сколько после этого точек будет!
       if Pos('//n points', TS.Strings[j])>0  then begin
          Val(Trim(Copy(TS.Strings[j], 1, Pos('//n points', TS.Strings[j])-1)),
               nPoints, errCode);
          if (errCode=0) then inc(j);
       end;

       // подсчитаем, сколько записей будет в массиве (это количество непустых строчек)
       K := 0;
       for i := j to TS.Count - 1 do begin
          s := Trim(TS.Strings[i]);
          if (length(s)>0)
                and (Pos('   ',s)>0) then
                inc(K);
       end;

       //  зададим длину массивов
       setlength(Arr1, K );
       setlength(Arr2, K );

       // перенесём записи в массивы
       K := 0;
       for i := j to TS.Count - 1 do begin
          s := Trim(TS.Strings[i]);
          if (length(s)>0) and (Pos('   ',s)>0) then begin
              Val(Trim(Copy(s,1, Pos('   ',s))), d1, errCode);
              Arr1[K] := d1;
              Val(Trim(Copy(s,Pos('   ',s), Length(s)-Pos('   ',s))), d2, errCode);
              Arr2[K] := d2;
              inc(K);
          end;
       end;


    end;
  finally
    FreeAndNil(TS);
  end;

  // Отобразим (визуализируем записи в MemoData
  for I := Low(Arr1) to High(Arr1) do
      MemoData.Lines.Append('Arr1 = '+FloatToStr(Arr1[i])+' Arr2 = '+FloatToStr(Arr2[i]));

end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строковыми данными [Danil] Паскаль, Turbo Pascal, PascalABC.NET 1 12.06.2010 09:30
Работа со строковыми данными prittygirl Паскаль, Turbo Pascal, PascalABC.NET 2 11.06.2010 14:50
Работа со строковыми данными [Danil] Паскаль, Turbo Pascal, PascalABC.NET 0 11.06.2010 10:27
Работа со строковыми данными Anton5 Фриланс 11 16.04.2010 14:48
Работа со строковыми данными. Anton5 Помощь студентам 3 13.03.2010 14:53