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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.11.2012, 20:55
Diplomate Diplomate вне форума
Прохожий
 
Регистрация: 10.11.2012
Сообщения: 15
Репутация: 10
По умолчанию кнопка Button и многострочный редактор Memo

Нужно составить программу, в которой будет кнопка Button и многострочный редактор Memo. При нажатии на кнопку вызывается диалог открытия файла(с помощью компонента OpenDialog) и содержимое выбранного файла отображается в Memo. Если файл имеет имя demo(в любом регистре), то текст отображается одним шрифтом, если другое-другим. Как такое реализовать я в целом знаю, но как сделать проверку на имя файла? Я знаю, что имя файла хранится в OpenDialog.FileName, но дело в том, что там находится путь к нему. К примеру, выбрав файл Demo в папке "папка1", в OpenDialog.FileName будет находиться следующий текст: "C:\папка1\demo.txt". Как тогда осуществить проверку имени файла? С конца что ли? Мне кажется, должен быть какой-то другой путь. Нет ли переменной, в которой будет храниться само имя файла, а не путь к нему?

Последний раз редактировалось Diplomate, 10.11.2012 в 21:04.
Ответить с цитированием
  #2  
Старый 10.11.2012, 22:15
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

AnsiUpperCase, AnsiLowerCase и вперёд.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 10.11.2012, 22:24
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Diplomate
Если файл имеет имя demo(в любом регистре), то текст отображается одним шрифтом, если другое-другим. Как такое реализовать я в целом знаю, но как сделать проверку на имя файла? Я знаю, что имя файла хранится в OpenDialog.FileName, но дело в том, что там находится путь к нему. К примеру, выбрав файл Demo в папке "папка1", в OpenDialog.FileName будет находиться следующий текст: "C:\папка1\demo.txt". Как тогда осуществить проверку имени файла?
Код:
  if AnsiSameText('demo.txt', ExtractFileName(OpenDialog1.FileName)) then
Если ещё и без учёта расширения тогда так:
Код:
  if AnsiSameText('demo', ChangeFileExt(ExtractFileName(OpenDialog1.FileName), '')) then
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
Diplomate (12.11.2012)
  #4  
Старый 11.11.2012, 18:21
Diplomate Diplomate вне форума
Прохожий
 
Регистрация: 10.11.2012
Сообщения: 15
Репутация: 10
По умолчанию

Большое спасибо.
У меня тут еще один вопрос. Нужно создать программу, состоящую из двух таблиц(5x5 и 1x5) и кнопки "Расчет". Суть задания в том, чтобы все числа в строке первой таблицы складывались и их сумма отображалась в соответствующей строке второй таблицы. Я составил код, но после заполнения первой таблицы и нажатия кнопки "Расчет" во второй таблице ничего не пишется! Вот код(Tab1 и Tab2 соответственно первая и вторая таблицы):
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,j,n:integer;
c:real;
b:boolean;
begin
b:=true; //b-логическая переменная, которой присваивается значение false, если найдена пустая ячейка(проверка, что все ячейки строки 
//заполнены)
c:=0; //c-переменная. в которой хранится сумма
for i:=0 to Tab1.RowCount do
 begin
  for j:=0 to Tab1.ColCount do
    if Tab1.Cells[i,j]='' then //если ячейка пустая, то b:=0
     b:=false;
  if b=true then //если b=true, то все ячейки заполнены, в этом случае мы подсчитываем сумму
   begin
    for n:=0 to Tab1.ColCount do
     c:=c+StrToFloat(Tab1.Cells[i,n]);
    Tab2.Cells[i,0]:=FloatToStr(c);
   end;
 end;
end; 
Насколько я понял программа в цикле, где идет проверка на то, что все ячейки строки заполнены, где-то присваивает переменной b значение false, поэтому подсчет и вывод значения c во вторую таблицу не происходит. Прошу найти ошибку в коде.

Последний раз редактировалось Diplomate, 11.11.2012 в 18:41.
Ответить с цитированием
  #5  
Старый 11.11.2012, 19:06
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Diplomate
У меня тут еще один вопрос. Нужно создать программу, состоящую из двух таблиц(5x5 и 1x5) и кнопки "Расчет". Суть задания в том, чтобы все числа в строке первой таблицы складывались и их сумма отображалась в соответствующей строке второй таблицы. Я составил код, но после заполнения первой таблицы и нажатия кнопки "Расчет" во второй таблице ничего не пишется! Вот код(Tab1 и Tab2 соответственно первая и вторая таблицы):
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,j,n:integer;
c:real;
b:boolean;
begin
b:=true; //b-логическая переменная, которой присваивается значение false, если найдена пустая ячейка(проверка, что все ячейки строки 
//заполнены)
c:=0; //c-переменная. в которой хранится сумма
for i:=0 to Tab1.RowCount do
 begin
  for j:=0 to Tab1.ColCount do
    if Tab1.Cells[i,j]='' then //если ячейка пустая, то b:=0
     b:=false;
  if b=true then //если b=true, то все ячейки заполнены, в этом случае мы подсчитываем сумму
   begin
    for n:=0 to Tab1.ColCount do
     c:=c+StrToFloat(Tab1.Cells[i,n]);
    Tab2.Cells[i,0]:=FloatToStr(c);
   end;
 end;
end; 
Насколько я понял программа в цикле, где идет проверка на то, что все ячейки строки заполнены, где-то присваивает переменной b значение false, поэтому подсчет и вывод значения c во вторую таблицу не происходит. Прошу найти ошибку в коде.
В свойстве TStringGrid.Cells первым должен идти номер колонки, вторым номер строки. У тебя же наоборот.
Ещё неправильно заданы диапазоны в циклах. Должно быть так:
Код:
for i:=0 to Tab1.RowCount - 1 do
.....
for j:=0 to Tab1.ColCount - 1 do
.....
for n:=0 to Tab1.ColCount - 1 do
Возможно есть ещё какие ошибки.
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
Diplomate (12.11.2012)
  #6  
Старый 12.11.2012, 21:33
Diplomate Diplomate вне форума
Прохожий
 
Регистрация: 10.11.2012
Сообщения: 15
Репутация: 10
По умолчанию

Премного благодарен.

Последний раз редактировалось Diplomate, 12.11.2012 в 21:45.
Ответить с цитированием
  #7  
Старый 13.11.2012, 20:32
Diplomate Diplomate вне форума
Прохожий
 
Регистрация: 10.11.2012
Сообщения: 15
Репутация: 10
По умолчанию Программа не работает.

Написал другую программу Делфи, сохранил ее. Теперь, когда я открываю программу и пытаюсь ее запустить, на экран выводится пустая форма, хотя код и все остальное есть. Что за хрень???
Снимаю вопрос, программа мистическим образом снова стала работать.
Ответить с цитированием
  #8  
Старый 15.11.2012, 22:45
Diplomate Diplomate вне форума
Прохожий
 
Регистрация: 10.11.2012
Сообщения: 15
Репутация: 10
По умолчанию Как выделить строку?

Мне нужно написать такую программу: у меня есть таблица, заполненная числами. Нужно сделать так, чтобы при выделении одной из ячеек таблицы, в компонент Label1 пишется сумма всех чисел в строке, где находится эта ячейка, а сама строка должна выделиться. Я сделала так, чтобы вычислялась сумму чисел, а как сделать так, чтобы выделилась строка? Как вообще выделить какую-нибудь ячейку в таблице? Какой нужен метод или какое свойство?
Ответить с цитированием
  #9  
Старый 15.11.2012, 23:08
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Один вопрос - одна тема.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter