Последние записи
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
- wprintf как напечатать кириллицу
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
24th
Фев
Как разделить строку на два числовых массива?
Posted by Chas under Пост-обзор
Подскажите как можно реализовать: вот есть у меня текстовый файл для проекта, в нем две колонки данных и делитель 4 пробела, как мне сделать из него 2 массива данных. один массив — одна колонка данных, второй — вторая, а потом по ним построить график. Зараннее благодарю!
Serge_Bliznykov:
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]));
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)