Форум: "Начинающим";
Текущий архив: 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