Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.02.2012, 15:20
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию не записывается последняя строка из stringgrid в Edit

Нужно скопировать текст из stringgrid в edit. В каждой ячейке stringgrid находится по одному символу. Размер stringgrid постоянно разный.
У меня не записывается последняя строчка из stringgrid в edit. В чем проблема не пойму.
Код:
for y := 0 to StringGrid1.RowCount do begin
for x := 0 to StringGrid1.ColCount do begin
txt:= txt+(StringGrid1.Cells[x,y]);
Edit1.text:=(txt);

А при занесении наоборот из edit d stringgrid не записывается последняя буква
Код:
m:=strtoint(edit1.text);//например =6
s:=edit2.Text;
for i:=0 to length(s) do
  StringGrid1.Cells[i mod m,i div m]:=s[i+1];

помогите пожалуйста.
  #2  
Старый 21.02.2012, 17:10
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

во первых

Код:
txt='';for y := 0 to StringGrid1.RowCount-1 do begin
for x := 0 to StringGrid1.ColCount-1 do begin
txt:= txt+(StringGrid1.Cells[x,y]);
Edit1.text:=(txt);

во вторых

Код:
m:=strtoint(edit1.text);//например =6
s:=edit2.Text;
for i:=0 to length(s)-1 do
  StringGrid1.Cells[i mod m,i div m]:=s[i+1];
  #3  
Старый 21.02.2012, 17:20
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Нет,
Цитата:
length(s)-1
В случае строк, Length возвращаес количество символов, так что там верно, а в случае StringGrid то да, нужно Length(..)-1, так как тут учитывается еще и 0й элемент массива


А, извиняюсь, все верно, не заметил... Сорри.

Последний раз редактировалось YVitaliy, 21.02.2012 в 17:26.
  #4  
Старый 21.02.2012, 18:10
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию

Код:
m:=strtoint(edit2.text);
shmess:=edit4.Text;
for i:=0 to length(shmess)-1 do
  StringGrid1.Cells[i mod m,i div m]:=shmess[i+1];
странно, но одна буква все равно не отображается, которая бала последняя в edit
и сдесь тоже все равно последняя строка не хочет заноситься в stringgrid

Последний раз редактировалось delphihelp, 21.02.2012 в 19:00.
  #5  
Старый 21.02.2012, 18:47
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Должно работать 100%. Лучше прикрепи свой неработающий пример, а там может что подправим.
  #6  
Старый 21.02.2012, 19:05
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию

Вот. В процедуре при нажатии button2 в компонент edit4 не дописывается последняя строка из stringgrid2. Еле нашел, вроде вложился файл. Заранее спасибо за помошь.
Вложения
Тип файла: rar нерабочая.rar (274.4 Кбайт, 5 просмотров)

Последний раз редактировалось delphihelp, 21.02.2012 в 19:09.
  #7  
Старый 21.02.2012, 19:48
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Ну, тут я уж не знаю. Проблема не в Эдите или стринггриде, а в алгоритме шифрования - он заполняет ячейки StringGrid2 значениями пустых (не заполненых) ячеек StringGrid1, в которых символ, кажись, 0й (или неопределен). Вот и String их распознавать не хочет. Если вывод делать сразу в Мемо (), то строка запишется, но без этих символов. Тогда, думаю, с рассшифровкой будут проблемы.
  #8  
Старый 21.02.2012, 20:16
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию

Цитата:
Сообщение от YVitaliy
Ну, тут я уж не знаю. Проблема не в Эдите или стринггриде, а в алгоритме шифрования - он заполняет ячейки StringGrid2 значениями пустых (не заполненых) ячеек StringGrid1, в которых символ, кажись, 0й (или неопределен). Вот и String их распознавать не хочет. Если вывод делать сразу в Мемо (), то строка запишется, но без этих символов. Тогда, думаю, с рассшифровкой будут проблемы.
А у меня и в memo такжде как и в едит выводит
Код:
Memo1.Lines.Append((txt));
без последней строки.
А что можно сделать, чтобы был символ определен, может как то по другому написать код?
  #9  
Старый 21.02.2012, 20:22
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Заполни сначала все без исключения ячейки StringGrid1 пробелами например, как вариант). Насчет мемо, нужно так
Код:
Memo1.text:=Memo1.Text+StringGrid1.Cells[X1,Y1];
  #10  
Старый 21.02.2012, 20:41
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию

Все, наконец то все записалось. В прцедуре на кнопку button1 нужно вместо
Код:
for i:=1 to length(mess)-1 do
написать
Код:
for i:=0 to length(mess)-1 do  
и тогда все заработает. Спасибо большое что помогли.
  #11  
Старый 21.02.2012, 20:42
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Так не помог-то ничем Да и ладно.
  #12  
Старый 21.02.2012, 21:28
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию

Цитата:
Сообщение от YVitaliy
Так не помог-то ничем Да и ладно.
ой, доизменялся, стало писать опять со второй ячейки stringgrid. А может можно опять вернуть как то из истории delphi то что я раньше писал?
  #13  
Старый 21.02.2012, 21:34
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от delphihelp
ой, доизменялся, стало писать опять со второй ячейки stringgrid. А может можно опять вернуть как то из истории delphi то что я раньше писал?
В скрытой папке __history лежат бэкапы pas и dfm файлов. Поищи там, только аккуратно, сначала скопируй уже работающий проект куда-нибудь, чтобы не перетереть все.
Этот пользователь сказал Спасибо nixel за это полезное сообщение:
delphihelp (21.02.2012)
  #14  
Старый 21.02.2012, 22:21
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию

Цитата:
Сообщение от nixel
В скрытой папке __history лежат бэкапы pas и dfm файлов. Поищи там, только аккуратно, сначала скопируй уже работающий проект куда-нибудь, чтобы не перетереть все.
ага, нашел.
  #15  
Старый 21.02.2012, 23:53
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию

А как можно заполнить пустые ячейки stringgrid например символом "-"? Потому что я заметил, что все таки он пропустил два пробела.
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:01.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025