Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];

Вниз

Столбец из .txt в массив?   Найти похожие ветки 

 
neon-w   (2008-12-06 18:18) [0]

Удалено модератором
Примечание: спам


 
{RASkov} ©   (2008-12-06 18:35) [1]

> Как это можно сделать?

Что именно непонятно?

> приведите плиз примеры кода.

Это ты приводи, а мы поможем где не ясно....


 
Johnmen ©   (2008-12-06 20:38) [2]


> Нужно вытащить из него столбец B и занести его значения
> в массив...

Кому нужно?


 
Anatoly Podgoretsky ©   (2008-12-06 20:51) [3]

Что лично ты сделал для решение данной "проблемы".


 
Смирнов Сергей   (2008-12-06 21:06) [4]


> Anatoly Podgoretsky ©   (06.12.08 20:51) [3]


Задал вопрос :)


 
Johnmen ©   (2008-12-06 21:07) [5]


> Anatoly Podgoretsky ©   (06.12.08 20:51) [3]
> Что лично ты сделал для решение данной "проблемы".

Вот так ответил бы аффтар:
Как "что"??? Запостил сюда! Это большая и сложная работа. И я с ней справился!


 
Johnnnn   (2008-12-06 22:38) [6]

Memo1.loadfromfile("1.txt");
for i:=0 to memo1.lines.count-1 do begin
s:=memo1.lines[i];
while i2=0 do begin
if pos(" ",s)<>0 then begin
s1:=copy(s, 1, pos(" ",s)-1);
delete(s, 1, pos(" ",s)+1);
end else begin
s1:=s;
i2:=1;
end;
i1:=i1+1;
a[i].[i1]:=s1;
end;
end;

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


 
Германн ©   (2008-12-07 00:37) [7]

Опять кто-то в текстовом файле нашёл "столбцы" и не может понять как к ним достучаться.
Привет Джо ещё раз :) Уверен, что не последний :)


 
Тын-Дын ©   (2008-12-07 01:22) [8]


> Нужно вытащить из него столбец B и занести его значения
> в массив... Как это можно сделать?Если не трудно приведите
> плиз примеры кода.Заранее благодарен.


var
  n1,n2: Integer;
  i: integer;
  L: TStringList;
  Arr: array of Integer;
begin
  L := TStringList.Create;
  try
    L.LoadFromFile("file.txt");
    n1 := Pos("B",L[0]);
    n2 := Pos("C",L[0]);
    if not (n2>n1) then raise Exception.Create("Error");
    n2 := n2-n1;
    SetLength(Arr,L.Count-1);
    for i := 1 to L.Count-1 do
    begin
      Arr[i-1] := StrToInt(Trim(Copy(L[i],n1,n2)));
    end;
  finally
    L.Free;
  end;


 
Тын-Дын ©   (2008-12-07 01:23) [9]

PS. Самое безобидное слово - бредофлудогоны.


 
Германн ©   (2008-12-07 01:31) [10]


> Тын-Дын ©   (07.12.08 01:22) [8]
>
>
> > Нужно вытащить из него столбец B и занести его значения
> > в массив... Как это можно сделать?Если не трудно приведите
> > плиз примеры кода.Заранее благодарен.
>
>
> var
>   n1,n2: Integer;
>   i: integer;
>   L: TStringList;
>   Arr: array of Integer;
> begin
>   L := TStringList.Create;
>   try
>     L.LoadFromFile("file.txt");
>     n1 := Pos("B",L[0]);
>     n2 := Pos("C",L[0]);
>     if not (n2>n1) then raise Exception.Create("Error");
>
>     n2 := n2-n1;
>     SetLength(Arr,L.Count-1);
>     for i := 1 to L.Count-1 do
>     begin
>       Arr[i-1] := StrToInt(Trim(Copy(L[i],n1,n2)));
>     end;
>   finally
>     L.Free;
>   end;
> <Цитата>
>
> Тын-Дын ©   (07.12.08 01:23) [9]
>
> PS. Самое безобидное слово - бредофлудогоны.
>

Самое безобидное слово - неучи!
Которые возомнили себя грамотеями!
По твоему в текстовом файле можно опираться на значения выдаваемые функцией Pos в первой строке?


 
Тын-Дын ©   (2008-12-07 01:42) [11]


> По твоему в текстовом файле можно опираться на значения
> выдаваемые функцией Pos в первой строке?


Ты где-то написал другое?
Ну тогда тебе в трёп и там отсиживаться, слушая более знающих людей.


 
Германн ©   (2008-12-07 02:00) [12]


> Тын-Дын ©   (07.12.08 01:42) [11]
>
>
> > По твоему в текстовом файле можно опираться на значения
> > выдаваемые функцией Pos в первой строке?
>
>
> Ты где-то написал другое?

Я?
А при чём тут я?
В сабже приведён был пример, который никак не вписывается  в Тын-Дын ©   (07.12.08 01:22) [8]


 
Johnnnn   (2008-12-07 08:16) [13]

Вы че собственна? Пример как пример, флуд? Ну просто люди которые разбираються им кажется что ето все елементарно, а на самом деле может чел вобще незнает за что ухватиться, а вопрос решить надо, да и к томуже вопрос интиресный.

Тын-дын
А как SetLength работает если массив 2 3 мерный? или вобще никак?


 
Johnnnn   (2008-12-07 09:03) [14]

Кстати там все конечно хорошо только а что будет если к примеру двузначное число будет записано ну в "B столбец"?


 
{RASkov} ©   (2008-12-07 13:30) [15]

var Arr: array of array of array of Integer;
....
StLength(Arr, 10, 30, 40);

> [14] Johnnnn   (07.12.08 09:03)
> а что будет

Пипец будет... Тут подумать нужно, а не копировать один в один :)
Пример в [8] - больше частный случай, чем универсальный алгоритм... Толчок для мысли.)


 
Тын-Дын ©   (2008-12-07 14:30) [16]


> Johnnnn   (07.12.08 09:03) [14]


При работе с двузначным числом всё будет в порядке.

Приведённый пример - решение проблемы автора. Проблемы именно в этом виде, именно этой проблемы, и никакой другой проблемы.

Если тебе нужно разбирать другой файл - бери и пиши.

Разбор текстовых файлов - как правило в каждом случае уникален.
В этом случае простейшее оптимальное решение такое.
В другом случае я бы посоветовал другое. Например, конечные автоматы.
Может не TStrigList, а построчное чтение из файла.


 
Германн ©   (2008-12-08 01:53) [17]


> Тын-Дын ©   (07.12.08 14:30) [16]
>
>
> > Johnnnn   (07.12.08 09:03) [14]
>
>
> При работе с двузначным числом всё будет в порядке.
>
> Приведённый пример - решение проблемы автора. Проблемы именно
> в этом виде, именно этой проблемы, и никакой другой проблемы.
>

Лучше бы ты жевал. :(


 
Тын-Дын ©   (2008-12-08 02:00) [18]


> Германн ©   (08.12.08 01:53) [17]
> > Тын-Дын ©   (07.12.08 14:30) [16]> > > > Johnnnn   (07.
> 12.08 09:03) [14]> > > При работе с двузначным числом всё
> будет в порядке.> > Приведённый пример - решение проблемы
> автора. Проблемы именно > в этом виде, именно этой проблемы,
>  и никакой другой проблемы.> Лучше бы ты жевал. :(


Ну в этой ветке пока жуёшь только ты из всех. Причем непонятно что.
Понятно было б, если б что сказал... В принципе... А то ведь только жуёшь...


 
{RASkov} ©   (2008-12-08 02:02) [19]

Хватит вам :) Как маленькие)


 
Германн ©   (2008-12-08 02:09) [20]


> Тын-Дын ©   (08.12.08 02:00) [18]
>
>
> > Германн ©   (08.12.08 01:53) [17]
> > > Тын-Дын ©   (07.12.08 14:30) [16]> > > > Johnnnn   (07.
>
> > 12.08 09:03) [14]> > > При работе с двузначным числом
> всё
> > будет в порядке.> > Приведённый пример - решение проблемы
> > автора. Проблемы именно > в этом виде, именно этой проблемы,
>
> >  и никакой другой проблемы.> Лучше бы ты жевал. :(
>
>
> Ну в этой ветке пока жуёшь только ты из всех. Причем непонятно
> что.
> Понятно было б, если б что сказал... В принципе... А то
> ведь только жуёшь...
>

Образно говоря я жую, а ты отрыгиваешь.


 
Германн ©   (2008-12-08 02:13) [21]


> {RASkov} ©   (08.12.08 02:02) [19]

Тут чуть- чуть более!


 
Тын-Дын ©   (2008-12-08 02:14) [22]


> Германн ©   (08.12.08 02:09) [20]


Вроде бы не мелкий и не больной. А повадки дебильные.


 
Тын-Дын ©   (2008-12-08 02:15) [23]

Сам с собой общайся. Твой флуд не стоит внимания.


 
Германн ©   (2008-12-08 02:39) [24]


> Тын-Дын ©   (08.12.08 02:14) [22]
>
>


> Тын-Дын ©   (08.12.08 02:15) [23]

Я прекращаю якобы"флуд". Далее молчу.
Но [8] - всё равно бред.


 
korneley ©   (2008-12-08 13:05) [25]

Всё хорошо. Но как-то тема разделителей нераскрыта. А вдруг там символ за номером 9? И в первой строке всего 11 символов (ну, там, и ^M^J впридачу)? Нехорошо получится :)


 
Anatoly Podgoretsky ©   (2008-12-08 13:45) [26]

Если все строки такие как приведно, то начиная со второй строки

READLN(F, X, Y,  Z, A, B, C);


 
Тын-Дын ©   (2008-12-08 14:06) [27]


> korneley ©   (08.12.08 13:05) [25]
> Всё хорошо. Но как-то тема разделителей нераскрыта. А вдруг
> там символ за номером 9?


Что за символ?

Файл текстоый. Берём, копируем приведённый пример и обрабатываем.
Всё. Какие ещё могут быть проблемы?


 
korneley ©   (2008-12-08 14:51) [28]


> Тын-Дын ©   (08.12.08 14:06) [27]

Дык, табуляция вроде :( Вполне разрешённая в _текстовых_ файлах. Просто символов при отображении может побольше оказаться, чем в файле. Вроде и колонки-столбцы, и красиво, а вот цифирьки, если на заголовок ориентироваться, не совпадут. Как-то так :)


 
Anatoly Podgoretsky ©   (2008-12-08 15:15) [29]

> korneley  (08.12.2008 14:51:28)  [28]

Чего так тебя волнует табуляция, вот справка

Read skips any blanks, tabs, or end-of-line markers preceding the numeric string.


 
Тын-Дын ©   (2008-12-08 15:25) [30]


> Anatoly Podgoretsky ©   (08.12.08 15:15) [29]
> > korneley  (08.12.2008 14:51:28)  [28]
>
> Чего так тебя волнует табуляция, вот справка
>
> Read skips any blanks, tabs, or end-of-line markers preceding
> the numeric string.


Да он имеет ввиду код из [8].


> korneley ©   (08.12.08 14:51) [28]


Ты в приведённом тексте тексте видишь табуляцию? Нет её там.


 
Anatoly Podgoretsky ©   (2008-12-08 15:37) [31]

Тем более, ояень четко видно, что строки финсированой длины выровненые пробелам. Так называемый Fixed Data Format. Данный формат файлов приден в моей статье

http://www.podgoretsky.com/Redir.aspx?id=143&DownloadFile=~/ddp/PasFiles.aspx


 
neon-w   (2008-12-08 16:51) [32]

Таак... несколько поправок. На самом деле я хотел сделать по аналогии. есстественно текстовый файл у меня несколько сложней..
и думал что будет построчное чтение например с "5 слова".
+ ко всему, значения не целочисловые, а с плавающей точкой...

 Form2                
H, m t,  grad C P, MPa Re Cp Mu Ro Alfa K          
***********   Part  1   **********                  
3000 96,9815629184216 9,00372                
2950 96,8890599221952 9,00372                
2900 96,7261221808156 8,69335450677982                
2850 96,4966591552207 8,38667561254675                
2800 96,2049715521901 8,08378779157026                
2750 95,8561033021058 7,78480273523291                
2700 95,4565235860334 7,48983960274428                
2650 95,015587686615 7,19902541518877                
2600 94,5491273017935 6,91249575825749                
2550 93,9612293375593 6,63039619540761                
2500 93,3210548528758 6,35288550936762                
***********    Part  2   **********                  
2496 94,157909178026 6,08007420225563                
***********  Part  3   **********                  
2486 99,0036506822825 6,08007420225563                
***********    Part  4   **********                  
2486 98,5674380132216 14,0641781896084                
2237,4 93,8507834637865 12,7077603706476                
1988,8 88,5638801119956 11,3513425516867                
1740,2 82,8081303897337 9,9949247327259                
1491,6 76,6519823601805 8,63850691376505                
1243 70,1319724849666 7,28208909480421                
994,400000000002 63,2481851191612 5,92567127584337                
745,800000000002 55,9481830994033 4,56925345688253                
497,200000000002 47,857399978191 3,21283563792168                
248,600000000002 38,2906756286743 1,85641781896084                
1,4495071809506E-012 25,8446189727467 0,5  


Ну и как видите, в некоторых строках исключения нужны.:(


 
Anatoly Podgoretsky ©   (2008-12-08 16:54) [33]

> neon-w  (08.12.2008 16:51:32)  [32]

Так нафига же ты приводил недостоверную информацию?


 
clickmaker ©   (2008-12-08 16:58) [34]

ну хоть какой-то формализации должен данный файл поддаваться
иначе, кроме как ручным разбором его не отпарсишь
Кроме того, непонятно, почему в заголовке так много букв, а чисел всего 3


 
korneley ©   (2008-12-08 17:48) [35]


> Anatoly Podgoretsky ©   (08.12.08 15:37) [31]
> ...Тем более, очень четко видно, что строки фиксированной длины
> выровненые пробелами

Ан, не скажите... :) Кстати, в свете открывшихся обстоятельств, может [26]? Или считает три дабла подряд в одной строке, или нет(на "недаблы" упрётся :))


 
Тын-Дын ©   (2008-12-08 17:57) [36]


> neon-w   (08.12.08 16:51) [32]


Вот видишь.
Задачу надо точно формулировтаь.


 
Тын-Дын ©   (2008-12-08 17:59) [37]


> neon-w   (08.12.08 16:51) [32]


В твоём случае есть 2 простейших варианта:
1. Загружатьв TStringList. Разбирать строки с помощью алгоритма конечных автоматов.
2. Читать построчно ReadLN. Разбирать каждую строку.


 
korneley ©   (2008-12-08 18:31) [38]

Решил "освежить". Вот:

procedure TForm1.Button1Click(Sender: TObject);
var F : TextFile;
   d1, d2, d3: double;
begin
 if OpenDialog1.Execute then begin
   AssignFile(F, OpenDialog1.FileName);
   Reset(F);
   try
     Memo1.Clear;
     while not Eof(F) do begin
       try
         Readln(F, d1, d2, d3);
         Memo1.Lines.Add(Format("%g %g %g",[d1, d2, d3]));
       except
         on E : EInOutError do Memo1.Lines.Add("Ни фига не наша строка: " + E.Message)
       end;
     end;
   finally
     CloseFile(F);
   end;
 end;
end;

Если даблов по трое - никакого парсинга. Правда запятые на точки придётся поменять. DecimalSeparator тут не канает :)


 
Anatoly Podgoretsky ©   (2008-12-08 18:55) [39]


> korneley ©   (08.12.08 18:31) [38]

В свете приведеных данных ReadlN уже не пойдет. ReadlN не работает с региональными настройками, но веры ему уже больше нет.


 
korneley ©   (2008-12-08 22:40) [40]


> В свете приведеных данных ReadlN уже не пойдет.

Да пойдёт... Делов-то: Ctrl+A (или Ctrl+H, от вероисповидания зависит). Ну, или по-старинке: оговаривать формат входа-выхода... Хотя, для кого-то это уже азиатчина :)



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.57 MB
Время: 0.006 c
15-1227442297
Slider007
2008-11-23 15:11
2009.01.18
С днем рождения ! 23 ноября 2008 воскресенье


2-1228465214
1234567
2008-12-05 11:20
2009.01.18
MessageBox


15-1227442403
Slider007
2008-11-23 15:13
2009.01.18
С днем рождения ! 22 ноября 2008 суббота


15-1227183443
XeON
2008-11-20 15:17
2009.01.18
Компонент "Таблица"


2-1228248817
Тень
2008-12-02 23:13
2009.01.18
Метод сеток





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский