Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
 
N_A07
0 / 0 / 0
Регистрация: 21.06.2013
Сообщений: 13
#1

Шикарное сохранение из StringGrid - Delphi

21.06.2013, 08:54. Просмотров 1064. Ответов 17
Метки нет (Все метки)

Есть задача организовать банальный сейв из таблицы СтрингГрида, вот код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
begin
SaveDialog1.Title := 'Обзывай @ Схороняй';
SaveDialog1.Filter := 'Текстовый файл|*.txt';
SaveDialog1.DefaultExt := 'txt';
  LastRow := StringGrid2.RowCount - 1;
  for i := 0 to LastRow do
    Memo1.Lines.Add(StringGrid2.Rows[i].CommaText);
    with SaveDialog1, Memo1 do
      if Execute then
        begin
           Lines.SaveToFile(FileName);
           OpenDialog1.FileName:=FileName; // Чтобы текст не затёр источник
           if FileExists(FileName) then else Exit;
  begin
    Res := MessageDlg('Файл с таким именем уже существует. Схороняем?',
     mtConfirmation, [mbYes, mbNo], 0);
    if Res <> mrYes then Exit;
   end;
 
        end;
end;
Как не бился, не выходит. Сам процесс сохранения идёт отлично, но ни как не заставить нормально реагировать на одинаковые имена файлов, т.е. сейчас по факту, программа ВСЕГДА выдаёт сообщение "такой файл уже существует" и в любом случае сохраняет файл, даже при нажатии кнопки отмена. Подскажите пожалуйста в чём загвоздка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2013, 08:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шикарное сохранение из StringGrid (Delphi):

Сохранение StringGrid - Delphi
Как сохранить данные из StringGrid в текстовый файл? -------------------------------------- И потом если что как вывести?

Сохранение StringGrid в MS Excel - Delphi
Здраствуйте. Имеется функция сохранения StringGrid в MS Excel. Работает, все хорошо, но хотел бы в ней разобраться. Может кто нибудь...

Сохранение данных из StringGrid - Delphi
Здравствуйте, подскажите пожалуйста.. Можно ли сохранить данные определенного столбца (массив) из StringGrid в текстовый файл?

StringGrid сохранение и загрузка - Delphi
Мне нужно сохранять и загружать таблицу. количество строк и столбцов можеть изменяться. Сделать нужно с помощью TIni... помогите код...

Сохранение StringGrid в файл - Delphi
Необходимо сохранить данные из StringGrid в файл - каждая ячейка - с новой строки. 1) - Ключ (серийный номер) 2) - E-mail...

Временное сохранение stringgrid - Delphi
Есть форма 1. На ней выполняются операции. Есть форма 2, которая берёт данные из формы 1 и выводит их в stringgrid По нажатию кнопки на...

17
N_A07
0 / 0 / 0
Регистрация: 21.06.2013
Сообщений: 13
04.07.2013, 10:02  [ТС] #16
P.S.
Цитата Сообщение от UI Посмотреть сообщение
никак не вяжется с использованием goto...
А как насчет этого?
http://habrahabr.ru/post/114211/
http://blogs.technet.com/b/eldar/archive/2008/02/05/2761516.aspx

Меня, внезапно, вновь зацепила данная тема - я ещё много лет назад, в студенчестве, я считал что goto гоним незаслуженно, и в отказе от него (в большинстве случаев) больше деланного пафоса, чем реальной пользы.
Один человек сказал в далёком 68м году: "Гоуту это плохо", и все как стадо дружно замычало в ответ "Дааааа". При чем сам человек даже толком не аргументировал почему это плохо. Конечно, это здорово почувствовать себя "элитой", считая что какой либо из операторов "слишком низшего уровня" и тыкать этим при каждом удобном случае, тем более зная, что большинство согласны с тобой. Правда согласны лишь потому что так сказал авторитетный программист, особо не вдумываясь в детали. А быть может у Эдсгера Дейкстра банально что-то не складывалось в жизни в тот момент, когда он написал свою статью, может девушка, которая ему нравилась сказала ему в тот день: "Go to ####!", а тут ему на глаза попадается кусок кода, в котором goto действительно использован слишком часто и не к месту, и каждый такой оператор напоминает ему о его унижении...
Хороший преподаватель не учит не использовать "плохой" оператор - он показывает альтернативу. Но зачем тупо не использовать goto, там где он вполне к месту, только из-за того что это не модно, не труъ, не кошерно..? (нужное подчеркнуть).
Goto во всю используют в куче успешных проектов, таких, к примеру, как "Андроид". А ведь эти программы пишут далеко не студенты, которым хочется поскорее "отвязаться от преподавателя и свалить в клуб". Так что я думаю и даже уверен, что вся эта истерия по поводу goto, просто искусственно раздута и не имеет под собою сколь либо значимых оснований.
И кстати, вот вместо послесловия: https://lkml.org/lkml/2003/1/12/128
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24007 / 15988 / 4836
Регистрация: 22.10.2011
Сообщений: 28,281
Записей в блоге: 5
04.07.2013, 10:14 #17
Цитата Сообщение от N_A07 Посмотреть сообщение
А как насчет этого?
Это не твой случай. В твоем случае использование goto - как корове седло. Да, были один/два случая в моей практике (а начал я программировать не вчера, и не позавчера), когда использование goto приносило выигрыш. Но за 20 лет - 2 раза!!!
Цитата Сообщение от N_A07 Посмотреть сообщение
Так что я думаю и даже уверен, что вся эта истерия по поводу goto, просто искусственно раздута и не имеет под собою сколь либо значимых оснований.
Вот когда тебе придется поддерживать код, написанный такими же "думальщиками", как ты, и прошитый насквозь goto во всех направлениях, когда тебе придется искать баги неделями в таком коде, посмотрим, как ты заговоришь, и что станешь думать.

P.S. Довод "если goto есть в языке, то его можно использовать" - не проходит. Попробуй переписать свой код на Обероне... Очень хочется посмотреть. Там просто нет goto... И, заодно, вопрос на засыпку: почему автор Оберона, профессор Н. Вирт (он же - автор Паскаля и Модулы, если что) убрал эту гадость из своего нового языка? Кстати, это один из немногих пунктов, по которым я с ним согласен. С другими его нововведениями можно поспорить, но избавление от goto - это то, что надо сделать давно и везде. Но сделать этого нельзя, потому что некоторые программисты пишут "лапшу", а их программы в новых версиях языка тоже должны поддерживаться. А "раз оно есть" - то... Ну, в общем, читай абзац с начала. Это замкнутый круг...

P.P.S. Один из любимых доводов: "выход из вложенного цикла - тут-то goto незаменим!!!". Так вот, это - не признак незаменимости конструкции, это - признак бедности языка.

Потому что я могу использовать "именованный цикл", и написать и вот так:
Код
  first_loop:
  for i in 1 .. 10 loop
     for j in 1 .. 10 loop
        for k in 1 .. 10 loop
           Put(i + j + k);
           exit first_loop when f(i, j, k);
        end loop;
     end loop;
  end loop first_loop;
вместо
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
var
 i, j, k: integer;
label finish;
begin
 for i := 1 to 10 do
   for j := 1 to 10 do
     for k := 1 to 10 do begin
       writeln(i + j + k);
       if f(i, j, k) then goto finish;
     end;
 finish:;
end.
, чего тебе Дельфи с Паскалем не позволяют... Только не надо опять лезть под капот, и смотреть, как оно там реализовано. "Под капотом" любая программа состоит из 0 и 1, однако, ты ж не пишешь почему-то сразу в маш. кодах, а используешь высокоуровневый язык программирования...
0
N_A07
0 / 0 / 0
Регистрация: 21.06.2013
Сообщений: 13
04.07.2013, 11:09  [ТС] #18
Вот когда тебе придется поддерживать код, написанный такими же "думальщиками", как ты, и прошитый насквозь goto во всех направлениях, когда тебе придется искать баги неделями в таком коде, посмотрим, как ты заговоришь, и что станешь думать.
Я ведь сказал выше что, да, goto (впрочем не только он) может быть использован слишком часто и не к месту. (опять же, прочти что сказал Торвальдс по этому поводу)
Я сам лично сталкивался с таким кодом "когда тебе придется искать баги неделями", при чем каюсь - тот код я написал сам Но это было ещё курсе на первом и из этого я вынес урок, так что я понимаю о чем ты говоришь.

Это не твой случай. В твоем случае использование goto - как корове седло. Да, были один/два случая в моей практике (а начал я программировать не вчера, и не позавчера), когда использование goto приносило выигрыш. Но за 20 лет - 2 раза!!!
Да, я не имею 20и летнего стажа программирования; хоть и закончил учебу 10 лет назад, но потом с дельфями почти не сталкивался, работая лишь с пхп и т.п., и только сейчас понадобилось вспомнить что-то серьезное, поэтому и обратился сюда с "нубским" вопросом (и кстати ещё раз всем ответившим спасибо за помощь).
Но даже не имея такого большого опыта, я могу понять что на родео, корове без седла не обойтись.
Чем там плох goto кроме того что это goto? Программа работает и работает хорошо, код ясен, путаницы нет. Твой аргумент, это: "не используй, потому что можно сделать иначе", вот и всё. Давай без предвзятости: объясни нормально, чем именно в том куске goto плох?

P.S. И не нужно примеров типа:
Попробуй переписать свой код на Обероне...
мы в разделе дельфи.
0
04.07.2013, 11:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2013, 11:09
Привет! Вот еще темы с ответами:

Сохранение StringGrid в Word - Delphi
Иногда не всё выводит,ошибки вылазиют в чем дело? procedure TForm1.N1Click(Sender: TObject); var i,j:Integer; begin try ...

Сохранение Stringgrid c ColorBOX - Delphi
Вот изрядно мучался (4 дня) с этим Stringgrid и ColorBox. У меня на Stringgrid можно рисовать, но не возможно сохранить цвета. Цвета мне...

StringGrid Сохранение и открытие - Delphi
Помогите пожалуйста пытаюсь сохранить стрингрид в текстовый файл procedure TForm2.Button2Click(Sender: TObject); var K:TextFile; ...

Автоматическое сохранение stringgrid - Delphi
Доброго времени друзья, не могли бы вы подсказать возможно ли то, что меня интересует. У меня есть программа, которая состоит из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru