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

Вниз

Массив из Мемо   Найти похожие ветки 

 
inkvizitor ©   (2006-11-10 16:45) [40]


> Ты там программу пишешь, или обедаешь?

одно другому не мешает.

> > for i:=1 to 16000 do
> > for j:=1 to 16000 do begin
> > A[i]:=StrToFloat(Memo1.Lines[i]);
> > B[i]:=StrToFloat(Memo2.Lines[j]);
> > end;

Массивы почему большие, потому что много данных надо ввводить (например исследование солнца - дипломнаяяяя)


> Ну ты спросил 8-O Откуда оно может знать?

Ну не надо так унижать все когдато начинали, правда?


 
Плохиш ©   (2006-11-10 16:49) [41]


> Ну не надо так унижать все когдато начинали, правда?

Не правда. Некоторые с книжек начинали, хотя сейчас это видно не в моде :-(


 
Percent   (2006-11-10 16:51) [42]

потому что много данных надо ввводить

Читай про динамические массивы.

например исследование солнца - дипломнаяяяя

Так ты студент?

Кстати, кода ты так и не привел.
А много кушать - вредно, замедляет умственную деятельность.


 
Ketmar ©   (2006-11-10 18:16) [43]

>[37] inkvizitor(c) 10-Nov-2006, 14:27
>Все так посмеялись, а советов рельных мало...
реальный совет тебе один: иди учить язык, который используешь.


 
inkvizitor ©   (2006-11-13 08:54) [44]

Percent, А теперь если не трудно второй вопрос:
Как в Chart-е выводить графики из мемо?
var  i,j:integer;
    X:array[1..16000] of real;
    Y:array[1..16000] of real;
begin
for i:=1 to memo1.Lines.Count-1 do
X[i]:=StrToFloat(Memo1.Lines[i]);          {преобразование в массив мемо1}
for j:=1 to memo2.Lines.Count-1 do
Y[j]:=StrToFloat(Memo2.Lines[j]);          {преобразование в массив мемо2}
end;
наверно опять чёто не то?
не могу найти лит-ру про динам. массивы.


 
novill ©   (2006-11-13 10:16) [45]

> [44] inkvizitor ©   (13.11.06 08:54)
> for i:=1 to memo1.Lines.Count-1 do

Ты в курсе что значение первых строчек в Мемо не будет попадать в массив?


> не могу найти лит-ру про динам. массивы.

Загружешь Delphi, жмешь F1, выбираешь закладку "Предметный указатель", набираешь dynamic arrays, нажимаешь Enter два раза.
В открывшейся странице читаешь примеры :) Если можешь понять английский текст, читаешь его. Этого достаточно.


 
Percent   (2006-11-13 10:24) [46]

Как в Chart-е выводить графики из мемо?

Не знаю. Никогда с TChart не работал. И разбираться ради тебя не хочу. Потому что ты не хочешь разбираться с программированием. Столько времени прошло, а ты не удосужился найти литературу. Даже по динамическим массивам, которые описаны практически в любой книге по программированию в Delphi. Ты напрячься не хочешь - зачем мне напрягаться?

Циклы, которые ты привел, почти правильные. Только считывать надо с нулевой строки, а не с первой, как у тебя. И индексная переменная j - лишняя; во втором цикле можно было бы обойтись той же i. И еще один момент: если у тебя в мемо неправильно введены числа, хотя бы с одной синтаксической ошибкой, то считывание в массив прервется на этой ошибке, причем, в какой строке это произойдет - из твоей программы никто не узнает. Сделай, чтобы программа сообщала пользователю хотя бы номер строки.

Ну и про динамические массивы почитай (http://delphikingdom.com/asp/viewitem.asp?catalogid=1184  раздел 2.17, хотя, рекомендую прочитать все), и сделай, наконец-то, свои массивы динамическими. Можно и по-другому поступить, но динамические массивы подойдут тебе лучше.

И еще. Сделай преобразование "назад", то есть, напиши код, чтобы данные из массивов заносились в третий и четвертый мемо.


 
inkvizitor ©   (2006-11-15 11:21) [47]


> Percent   (13.11.06 10:24) [46]

Спасибо нашел почитал.

> индексная переменная j - лишняя; во втором цикле можно было
> бы обойтись той же i


У меня два мемо и в каждом может быть разное количество строк.


 
Плохиш ©   (2006-11-15 11:30) [48]


> У меня два мемо и в каждом может быть разное количество
> строк.

Рыдал...


 
inkvizitor ©   (2006-11-22 11:32) [49]

inkvizitor
> > Percent   (13.11.06 10:24) [46]

Вообщем считаю данные из двух мемо и делаю вычисления потом
результат вывожу на др. мемо на  др. форме.
ПРОблема: результат выводится на вторую строку?(нужно на первую)
:

procedure TPagesDlg.OKBtnClick(Sender: TObject);
var  i,j,n:integer;
    ro,cov,sigmaX,sigmaY,A,Xsr,Ysr:real;
    X,Y:array of real;

begin

n:= memo1.Lines.Count;
PagesDlg.Visible:=False;
Form2.visible:=True;                       { переключение между формами}
OpenDialog1.Filter := "*.txt|*.txt";       {открытие файла в мемо1}
OpenDialog2.Filter := "*.txt|*.txt";       {открытие файла в мемо2}
SetLength(X,10000);
Xsr:=0;
for i:=0 to memo1.Lines.Count-1 do begin
X[i]:=StrToFloat(Memo1.Lines[i]);          {преобразование в массив мемо1}
Xsr:=X[i]+Xsr;
end;
Xsr:=Xsr/n;
SetLength(Y,10000);
Ysr:=0;
for j:=0 to memo2.Lines.Count-1 do
begin
Y[j]:=StrToFloat(Memo2.Lines[j]);          {преобразование в массив мемо2}
Ysr:=Y[j]+Ysr;
end;
Ysr:=Ysr/n;

for i:=0 to memo1.Lines.Count-1 do sigmaX:=sqr(X[i]-Xsr);
sigmaX:=sqrt((1/n)*sigmaX);

for j:=0 to memo2.Lines.Count-1 do sigmaY:=sqr(Y[i]-Ysr);
sigmaY:=sqrt((1/n)*sigmaY);

for i:=0 to memo1.Lines.Count-1 do
for j:=0 to memo2.Lines.Count-1 do
A:=(X[i]-Xsr)*(Y[i]-Ysr);
cov:=(1/n)*A;

ro:=cov/(sigmaX*sigmaY);
???Form2.Memo1.Lines.Add(Floattostr(abs(ro)));???
end;


 
Anatoly Podgoretsky ©   (2006-11-22 11:39) [50]

> inkvizitor  (22.11.2006 11:32:49)  [49]

>  ???Form2.Memo1.Lines.Add(Floattostr(abs(ro)));???

Form2.Memo1.Lines.Text := Floattostr(abs(ro))


 
click   (2006-11-22 18:04) [51]

после прочтения упалпоцтол и рыдал :)))))))))))))))


 
vasIzmax ©   (2006-11-22 20:11) [52]


> после прочтения упалпоцтол и рыдал :)))))))))))))))

100-пудово. Но грех над учащимся смеяться. А вообще весело вы тут рулите! :)


 
Джо ©   (2006-11-23 04:25) [53]

Определенно, вот этот студент желает научиться. Обычно уходят обиженными, да и с ЧЮ напряженка :)

2 vasIzmax ©
Тут тебе дело советуют — займись языком, потому что вслепую тыкаться сложно и непродуктивно.


 
inkvizitor ©   (2006-11-23 12:03) [54]


> Anatoly Podgoretsky ©   (22.11.06 11:39) [50]

Спасибо за совет.

> после прочтения упалпоцтол и рыдал :)))))))))))))))

Если после каждого быдешь рыдать взорвешся.

Люди, Если хотите просто посмеяться не пишите ничего.не тратьте время.


 
Elen ©   (2006-11-23 12:15) [55]

E[[[[ Щас насоветую....


> Как из Мемо(в нем уже есть числа в один столбец) сделать
> массив чисел

Зачем загаживать мемо - что просто массивом не обойдешся? Массив тоже можно в файл сохранить


> как компоненту Chart "заставить" выводить график

В чарте есть chart1.series[1].addx(<тут впиши данные по х>).


 
inkvizitor ©   (2006-11-23 12:21) [56]


> Elen ©   (23.11.06 12:15) [55]

Спасибо за чарт.

> Зачем загаживать мемо - что просто массивом не обойдешся?
>  

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


 
inkvizitor ©   (2006-11-25 16:10) [57]

Люди скажите как сэйфдиалог прописывать чтоб не писать вконце имени расширение.


 
Palladin ©   (2006-11-25 16:19) [58]

говорю, человек, волшебное свойство DefaultExt


 
inkvizitor ©   (2006-11-28 13:53) [59]


> Palladin ©   (25.11.06 16:19) [58]
> говорю, человек, волшебное свойство DefaultExt

не получается - "выбивает сразу".
begin

if SaveDialog1.Execute then
  Memo1.Lines.SaveToFile(SaveDialog1.DefaultExt);

end;
подскажите правильное написание ...


 
Anatoly Podgoretsky ©   (2006-11-28 14:42) [60]

> inkvizitor  (28.11.2006 13:53:59)  [59]

Что значит  "выбивает сразу".
Мне вообще не видится смысла в подобном синтаксисе, может ты объяснить что бы это значило, как оно должно работать для SaveToFile


 
inkvizitor ©   (2006-11-28 15:10) [61]


> Anatoly Podgoretsky ©   (28.11.06 14:42) [60]

т.е. программа не выполняется и все.
И каким образом надо прописывать SaveDialog1, так чтобы не писать расширения вручную?


 
Steep ©   (2006-11-28 15:14) [62]

SaveDialog1.DefaultExt := "pas";


 
inkvizitor ©   (2006-11-29 08:44) [63]


> Steep ©   (28.11.06 15:14) [62]

Спасибо за совет попробую!


 
inkvizitor ©   (2006-12-01 09:29) [64]

Как сделать разделение в Мемо? т.е. в мемо загружаем два столбца данных (*.тхт или *.DAT) нужно чтобы эти два столбца "раскидались" в два массива вещественных чисел.


 
ASoft   (2006-12-01 10:43) [65]

сколько ж можно, мучить бедное memo?.. )


 
inkvizitor ©   (2006-12-01 13:23) [66]

сколько надо столько и буду.


 
clickmaker ©   (2006-12-01 13:31) [67]


> 64] inkvizitor ©   (01.12.06 09:29)
> Как сделать разделение в Мемо? т.е. в мемо загружаем два
> столбца данных (*.тхт или *.DAT) нужно чтобы эти два столбца
> "раскидались" в два массива вещественных чисел.

Memo.Lines, Pos(), Copy(), StrToFloat()


 
Сергей М. ©   (2006-12-01 13:57) [68]


> в мемо загружаем два столбца данных (*.тхт или *.DAT)


Процитируй здесь фрагмент содержимого того самого файла (*.тхт или *.DAT) ..


 
Anatoly Podgoretsky ©   (2006-12-01 15:48) [69]

> inkvizitor  (01.12.2006 13:23:06)  [66]

А!
Тогда еще можно подождать.
Ты только скажи когда кончишь.


 
Плохиш ©   (2006-12-01 17:34) [70]


> Ты только скажи когда кончишь.

Кончил - не кончил, 3 минуты...


 
inkvizitor ©   (2006-12-02 16:46) [71]


> Процитируй здесь фрагмент содержимого того самого файла
> (*.тхт или *.DAT) ..

данные могут быть такими:
  22737.56      1.3509317E-03
  22738.09      1.3509317E-03
  22738.63      1.3509317E-03
  22739.16      1.3509317E-03
  22739.70      1.3509317E-03
  22740.23      1.3477606E-03
  22740.77      1.3440152E-03
  22741.30      1.3402835E-03
  22741.83      1.3365382E-03
  22742.37      1.3401280E-03
  22742.90      1.3469161E-03
а могут и такими:
  22750.23      0.2847682    
  22750.98      0.3346645    
  22751.74      0.3753366    
  22752.49      0.4131504    
  22753.25      0.4237683    
  22754.01      0.4164895    
  22754.76      0.3694635    
  22755.52      0.3213220    
  22756.27      0.2591151    
  22757.03      0.3117313    
  22757.79      0.4161148    
  22758.54      0.4886835    
  22759.30      0.4506118    
  22760.05      0.3956408    
  22760.81      0.5367150    
  22761.56      0.7047158    
  22762.32      0.8123572    
и длина столбцов несколько сотен, а то и до тысячи добегает
> Кончил - не кончил, 3 минуты...

Плохиш по себе людей не судят!!!


 
Anatoly Podgoretsky ©   (2006-12-02 20:14) [72]

> inkvizitor  (02.12.2006 16:46:11)  [71]

и что за два первых символа вначале и шесть в середине.
Но тебе явно хватит тривиального ReadLn


 
inkvizitor ©   (2006-12-04 13:32) [73]


> Anatoly Podgoretsky ©   (02.12.06 20:14) [72]


> и что за два первых символа вначале и шесть в середине.

извиняюсь я не понял про какие символы(точка, звездочка и Е[экспонента] между столбцами пробелы, числа дробные, -03  степень).

> Но тебе явно хватит тривиального ReadLn

Типа readln(Memo.Lines[].Pos[]) ;
или по другому?не знаю как прописывается а спросить не у кого:-(.


 
Плохиш ©   (2006-12-04 13:39) [74]


> inkvizitor ©   (04.12.06 13:32) [73]


> Типа readln(Memo.Lines[].Pos[]) ;
> или по другому?не знаю как прописывается а спросить не у
> кого:-(.

Может всё-таки почитаешь чего-нибуть?


 
Anatoly Podgoretsky ©   (2006-12-04 13:51) [75]

> inkvizitor  (04.12.2006 13:32:13)  [73]

> readln(Memo.Lines[].Pos[]) ;

Из этого правильно только readln(


 
Anatoly Podgoretsky ©   (2006-12-04 13:51) [76]

> Плохиш  (04.12.2006 13:39:14)  [74]

> Может всё-таки почитаешь чего-нибуть?

Не царское это дело.


 
inkvizitor ©   (2006-12-11 10:37) [77]

как пробелы считывать?Если выводить массив Х[i] то иногда проходит,а иногда нет. но когда Y[i] это не работает. Вот данные
    22737.56       1.3509317E-03
    22738.09       1.3509317E-03 ,  а вот резт-т:

X[i]     22737.56    
         22738.09
Y[i]    0,0013509317
        0,0013509317
Код программы:
type
   TMass=array of double;
var
x,y: TMass;
i,p1,p2,p3,p4,k,j: integer;
s: string;
begin
if Memo1.Lines.Count=0 then begin ShowMessage("нет данных!"); exit;end;
  Form2.Memo1.Lines.Clear;
  Form1.Visible:=False;
  Form2.Visible:=True;
  SetLength(x,Memo1.Lines.Count);
  SetLength(y,Memo1.Lines.Count);
  for i:=1 to length(x) do
   begin
   k:=1;
   p1:=0; p2:=0;p3:=0;p4:=0; {пробелы и числа}
   s:=Memo1.Lines.Strings[i];
   for j:=1 to length(s) do
      if (S[j]=".") then s[j]:=",";
   while (s[k]=" ")do  {поиск пробела в начале строки}
   begin
     p1:=p1+1;
     k:=k+1;
   end;
   p2:=p1;
   while (s[k]<>" ")do {поиск первого числа}
   begin
     p2:=p2+1;
     k:=k+1;
   end;
   p3:=p2;
   while (s[k]=" ")do   {поиск второго пробела}
   begin
     p3:=p3+1;
     k:=k+1;
   end;
   p4:=p3;
   while (s[k]<>" ")do   {поиск второго числа}
   begin
     p4:=p4+1;
     k:=k+1;
   end;
  Form2.Edit1.Text:=Copy(s,p1+1,p2-p1);
  Form2.Edit2.Text:=Copy(s,p3+1,p4-p3);
  x[i]:=StrToFloat(Copy(s,p1+1,p2-p1));  {запись числа в 1-й массив}
  y[i]:=StrToFloat(Copy(s,p3+1,p4-p3));  {запись числа в 2-й массив}
  Form2.Memo1.Lines.Add(floattostr( x[i](или y[i]))); {вывод массива на форму2 }
    end;
end;
Вообщем все таки не получается по человечески разрезать строку.HELP!!!


 
Elen ©   (2006-12-11 10:44) [78]


> inkvizitor

А ты не с мемо работай а с TstringGrid. И тудыть в колонки запихивай данные из разных файлов. Там на каждую колонку есть LoadFromFile. Дешево и красиво ;)


 
Elen ©   (2006-12-11 11:01) [79]


> данные могут быть такими:
>   22737.56      1.3509317E-03
>   22738.09      1.3509317E-03
>   22738.63      1.3509317E-03

Уж коли захочется Readln то примерно так :

readln(f,a);
a:=trim(a);
i:=length(a);while a[i]<>" " do begin b:=a[i]+b; dec(i);end;
a:=trim(copy(a,1,i));


Ну и в "а" будет первое в "b" второе число, как бы оно не выглядело. Приведеш его потом к числовому формату и делов...


 
Плохиш ©   (2006-12-11 11:11) [80]


> Elen ©   (11.12.06 11:01) [79]

А чем readln(f, float1, float2) не нравиться?



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

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

Наверх





Память: 0.63 MB
Время: 0.013 c
15-1166385056
jack128
2006-12-17 22:50
2007.01.07
XL Report


2-1166214719
КВАНТ
2006-12-15 23:31
2007.01.07
Отлов копирования (любыми способами)


15-1166173759
pavel_guzhanov
2006-12-15 12:09
2007.01.07
От книг Архангельского есть польза!!! :0))


15-1166345397
Павел Калугин
2006-12-17 11:49
2007.01.07
Помогите студиозусу...


15-1166100665
TIF
2006-12-14 15:51
2007.01.07
Vista Manifest и Vista Style Components





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский