powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Пишу проект базы данных, система и передача данных
58 сообщений из 58, показаны все 3 страниц
Пишу проект базы данных, система и передача данных
    #39496744
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Сейчас передо мной стоит задача написания проекта, который будет выполнять определенный функционал по взаимодействию с различными СУБД, получения и передачи информации по сети. Я хочу поэтапно описывать конкретные задачи и мою реализацию. Возможно кому-нибудь будет полезно, или кто-нибудь подправит и подкорректирует, тем самым улучшит реализацию. Всем спасибо заранее
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496749
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. я реализовываю проект на RadStudio 10.1 Berlin
Программа должна уметь подключаться к большому количеству различных СУБД, причем корректировать настройки СУБД не предоставляется возможным. Затем программа должна уметь выполнять SQL скрипт на СУБД. А результаты выполнения скрипта передать по интернету (в виде файла для начала). Я решил реализовать данную задачу с помощью встроенных компонентов FireDAC
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496750
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Соединение с СУБД (будет изменяться)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Procedure TForm1.ConnectToServer(fConnectString: String; fAutoReconnect:Boolean;
                                 fIsolation:TFDTxIsolation; 
                                 var fResult:String; var fisConnect:boolean);
var
  i:Byte;
begin
  i := 0;
  if FDConnection1.Connected then
    FDConnection1.Connected := False;
  FDConnection1.TxOptions.Isolation := fIsolation;
  FDConnection1.ResourceOptions.AutoReconnect := fAutoReconnect;   
  FDConnection1.Params.Text := fConnectString;
  while (not FDConnection1.Connected) and (i < 2) do 
  //2 попытки на соединение (в случае c FireBird столкнулся с тем, что если с первого раза не соединился, есть шанс 
  //соединиться со второй попытки через непродолжительное время, в моем случае я взял секунду
  //связано с ошибкой - Connection rejected by remote interface)
  try
    if i > 0 then sleep(1000);
    FDConnection1.Connected := true;
  except
    on E:Exception do
    begin
      inc(i);
      fResult := 'ConnectToServer-' + E.Message;
    end;
  end;
  fisConnect := FDConnection1.Connected;
end;
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496751
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в бложик
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496752
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2. Выполнение SQL запроса
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
procedure TForm1.ExecSQL(fFDConnection: TFDConnection; fSQLText: String;
                         fisOpen:boolean; fFileName,fDelim:String; fBlockSize:Integer; 
                         fisStandartExport:Boolean;
                         var fError: String);
//fSQLText - текст запроса
//fisOpen - True(Запрос Select), False (Запрос DML)
//fFileName - Файл куда сохраняется результат (путь и имя файла, например: d:\1.txt)
  //fDelim - разделитель между значениями полей;
  //fBlockSize - Сколько записей надо накопить перед сбросом в файл
  //fisStandartExport - Выгрузить стандартной выгрузкой FDQuery (на всякий случай)
var
  qrTemp: TFDQuery;
begin
  qrTemp := TFDQuery.Create(Self);
  with qrTemp do
  try
    try
      Connection := fFDConnection;
      SQL.Text := fSQLText;
      DisableControls;
      fFDConnection.TxOptions.ReadOnly := fisOpen;
      if fisOpen then
      begin
        FetchOptions.CursorKind := ckForwardOnly;
        Open;
        if (fFileName <> '') then
          if fisStandartExport then
            SaveToFile(fFileName,sfBinary)//Стандартная выгрузка
          else
          begin
            fError := SaveQueryToFile(fFileName,qrTemp,fDelim,fBlockSize);
            if fError <> '' then
              exit; //Переход на Finally
          end;
        Close;
      end
      else
        ExecSQL;
    except
      on E:Exception do
        fError := 'ExecSQL-'+E.Message;
    end;
  finally
    try FreeAndNil(qrTemp); except end;
  end;
end;



Пример использования
Код: pascal
1.
ExecSQL(FDConnection1,Memo2.Text,True,'d:\MyTxt.txt','~',10000,False,fErrorMessage);
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496756
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

Я думаю это больше в форуме, потому что я его только реализовываю и интересно мнение людей, после полной реализации можно собрать в блог и залить
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496760
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3. Выгрузка результата Query в текстовый файл
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
Function TForm1.SaveQueryToFile(fFileName: String; fFDQuery: TFDQuery;
                                fDelim:String; fBlockSize:Integer):String;
//fDelim - разделитель между значениями полей;
//fBlockSize - Сколько записей надо накопить перед сбросом в файл
var
  i,fBlock,fFieldCount: Integer;
  OutLine,sTemp: string;
  F:TextFile;
begin
  memo3.Clear;
  //fFDQuery.FetchOptions.CursorKind := ckForwardOnly; И fFDQuery.DisableControls; выполняются до
  //FreeAndNil(fFDQuery); происходит после выполнения процедуры
  fFDQuery.First;
  memo3.Lines.Add('StreamOutline begin - '+datetimetostr(now));
  SaveQueryToFile := '';
  AssignFile(F,fFileName);
  fBlock := 0;
  try
    Rewrite(f);
  except
    on E:Exception do
    begin
      SaveQueryToFile := 'RewriteFile-'+E.Message;
      FreeAndNil(F);
      exit;
    end;
  end;
  try
    try
      fFieldCount := fFDQuery.FieldCount;
      while not fFDQuery.Eof do
      begin
          for i := 0 to fFieldCount - 1 do
          begin
            sTemp := fFDQuery.Fields[i].AsString;
            OutLine := OutLine + sTemp + fDelim;
          end;
          setLength(OutLine, Length(OutLine) - 1);
          OutLine := OutLine + sLineBreak;
          if (fBlock >= fBlockSize) then
          begin
            setLength(OutLine, Length(OutLine) - 1);
            try
              Write(F,OutLine);
            except
              on E:Exception do
              begin
                SaveQueryToFile := 'WriteToFile-'+E.Message;
                FreeAndNil(F);
                exit; //переход на filally
              end;
            end;
            OutLine := '';
            fBlock := 0;
          end
          else Inc(fBlock);
          fFDQuery.Next;
      end;
      if (OutLine <> '') then
        Writeln(F,OutLine); //Дописываем блок в котором не набралось нужное количество записей
    except
      on E:Exception do
      begin
        SaveQueryToFile := 'SaveQueryToFile-'+E.Message;
        FreeAndNil(F);
        exit; //переход на filally
      end;
    end;
  finally
    try CloseFile(F); except end;
  end;
  memo3.Lines.Add('StreamOutline End - '+datetimetostr(now));
end;



Пример использования:
Код: pascal
1.
fError := SaveQueryToFile('d:\1.txt',qrTemp,'~',10000);
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496762
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandistя его только реализовываю и интересно мнение людей

Как я уже сказал: спрячь этот код и никому не показывай. Чтобы не было мучительно стыдно
за бессмысленно нажатые кнопки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496763
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача очень простая, да и ее рализация пока у тебя пока самая примитивная.

Навевает в общем:
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496768
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,
лучше написать не смог. Почему должно быть стыдно? Я не позиционирую себя как профессионала в программировании, реализовываю по мере своих способностей. Если есть чем подсказать буду рад
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496774
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пойми, что сейчас ты гордишься примитивными вещами класса "Хэлло ворлд".
Sandistлучше написать не смог. Почему должно быть стыдно?

Именно потому, что ты выкладываешь на всеобщее обозрение свой лучший код, но при этом те,
кто постарше и поопытнее, напишут то же самое чисто рефлекторно, только код будет короче и
эффективнее.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496779
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищи, каждый имеет право быть чайником и ламером,
тем более невоинствующим. Пусть пишет, как может, и
выкладывает свои достижения. Возможно, кто-то захочет
подсказать и направить в правильное русло. Авось, через
месяц качество его кода вырастет на порядок.

А закрыть/удалить всегда успеется, это несложно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496782
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Так стыдно-то почему должно быть? Да, я не особо опытный и пусть даже не особо смышленый, но ведь для чего нужны форумы? На мой взгляд чтобы делиться информацией с другими. Я поделился, мне ответили, что все очень плохо, что умные дяди напишут лучше и что им не стоит гордиться. А как это должно мне помочь? Ведь если бы я мог, я бы сразу написал очень хороший код. И я не горжусь этим кодом, я написал, чтобы узнать больше и возможно кому-нибудь помочь. И я не считаю, что своим кодом я засирают форум. Я считаю, что засирают форум сообщения, которые пишутся не по теме. Вот как это например.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496786
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SandistВедь если бы я мог, я бы сразу написал очень хороший код.
это неважно.
В любом случае, какой код ни напиши, он кому-то будет казаться очень плохим
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496790
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandistТак стыдно-то почему должно быть?

Я даже и не знаю... Почему может быть стыдно за тупую копи-пасту чужого кода и выдавание
его за свой?

В своём коде ты должен знать назначение каждой строчки чтобы уметь объяснить зачем она
именно там и почему она именно такая.

А теперь объясни мне зачем в
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1267396&msg=20683155 вызов
DisableControls?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496796
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist,

хочешь кому-то помочь, напиши книгу или выложи готовый проект на публичный ресурс. Формат форума предполагает вопрос-ответ и обсуждение. Пока ты будешь писать программу, твой топ разрастется до размеров первого тома "Война и мир". Вряд ли кто-то из пришедших по ссылкам гугла решиться его читать с самого начала.

Кроме того, маловероятно, что окружающие (кроме тебя самого) будут восторгаться публикуемым тобой кодом. Да еще и советами замучают :)
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496797
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

я извиняюсь, ранее я использовал DataSource и Query передавался в параметре, потом я переписал и создавал Query внутри и уничтожал внутри.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496804
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док> хочешь кому-то помочь, напиши книгу или
Док> выложи готовый проект на публичный ресурс.

Да какая уж тут книга с такими знаниями.
А готового проекта пока нет, "в процессе".
Так что пусть выкладывает, самые явные
глупости кто-то может и подправить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496805
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist,

видимо я написал реально несуразную хрень, раз все так настойчиво пытаются мне об этом сказать
мне интересно, вот я вбил в гугле "выгрузка query в csv delphi"
первая ссылка https://stackoverflow.com/questions/5680017/delphi-tquery-save-to-csv-file
этот код лучше?
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496813
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist> этот код лучше?

Не намного.

P.S. К тебе претензии, потому что топик будет выглядеть
не как "покритикуйте код", а как "как можно/нужно делать".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496818
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandistя вбил в гугле "выгрузка query в csv delphi"

То есть из стохастического программиста, пишущего код методом тыка ты решил мутировать в
гуглопрограммиста, копипастящего нагугленные куски кода себе в программу. Хрен редьки не
слаще.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496825
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist,

пиши давай, никого не слушай.
А то местные старпёры развели тут междусобойчик, нормальным парням пройти нельзя.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496827
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДSandist,

пиши давай, никого не слушай.
А то местные старпёры развели тут междусобойчик, нормальным парням пройти нельзя.

"Ты пиши,
пиши,
пиши,
Сочиняй весь век,
Потому что пародист —
Тоже человек.

Он не хочет затянуть
Туже поясок.
Для него
твои стихи —
Хлебушка кусок.

Ты пиши
и мой призыв
Не сочти за лесть,
Потому что пародист
Тоже
хочет
есть!"
А. Иванов
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496828
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Я изначально был гуглопрограммистом, сказал же, что не претендую на роль проф программиста
ладно, я понял, что не стоит продолжать выкладывать свой говнокод
надеюсь никого не испачкал этим кодом ))
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496869
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist3. Выгрузка результата Query в текстовый файл


За except end я бы оторвал руки сразу, уж извини.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496871
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и в ухо ему, в ухо! (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39496875
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,
)))

Код: pascal
1.
2.
if Assigned (qrTemp) then
  FreeAndNil (qrTemp)
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497012
pgiw99oeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пиши, чайнику у чайника понятней будет
то, что для профи само собой разумеется чайнику надо рассказать (может быть)
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497019
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist
Код: pascal
1.
2.
if Assigned (qrTemp) then
  FreeAndNil (qrTemp)

Не в этом деле. К тому же, оно не может быть не Assigned. А если б даже и могло - все равно это была бы бессмысленная проверка.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497024
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiSandist3. Выгрузка результата Query в текстовый файл


За except end я бы оторвал руки сразу, уж извини.
почему же, иногда можно игнорировать возникающие исключения вместо беспощадного прекращения работы программы
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497052
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2иногда можно игнорировать возникающие исключения вместо беспощадного прекращения работы программыНе очень понял. Программа ведь и так и так прекратит работу в месте возникновения исключения, игнорируешь ты его или обработаешь, не важно.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497073
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockasutp2иногда можно игнорировать возникающие исключения вместо беспощадного прекращения работы программыНе очень понял. Программа ведь и так и так прекратит работу в месте возникновения исключения, игнорируешь ты его или обработаешь, не важно.Что-то новенькое
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497078
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerYuRockпропущено...
Не очень понял. Программа ведь и так и так прекратит работу в месте возникновения исключения, игнорируешь ты его или обработаешь, не важно.Что-то новенькое Чо?)
Прогркмма - я имел ввиду, конечно, код программы. Не пойдет дальше выполнение кода после исключения, а перейдет в обработчик исключений последнего уровня, если он есть.
"игнорировать" (это тоже не я так назвал, а автор выше) - это сделать пустой обработчик.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497081
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockwhite_niggerпропущено...
Что-то новенькое Чо?)
Прогркмма - я имел ввиду, конечно, код программы. Не пойдет дальше выполнение кода после исключения, а перейдет в обработчик исключений последнего уровня, если он есть.
"игнорировать" (это тоже не я так назвал, а автор выше) - это сделать пустой обработчик.
Товарищ Кличко. Виталий Владимирович. Перелогиньтесь.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497093
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist
Код: pascal
1.
2.
3.
  finally
    try CloseFile(F); except end;
  end;





Почему отрывать руки за такой код: потому что если файл по каким-то причинам не сможет быть корректно закрыт (банально место на диске кончится), то об этом никто не узнает. Возможно, никогда.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497104
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiSandist
Код: pascal
1.
2.
3.
  finally
    try CloseFile(F); except end;
  end;





Почему отрывать руки за такой код: потому что если файл по каким-то причинам не сможет быть корректно закрыт (банально место на диске кончится), то об этом никто не узнает. Возможно, никогда.
+1
Файл будет страдацъ в темноте и одиночестве, покрывшись паутиной.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497105
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
простейший пример, когда можно обойтись пустым except end :
Код: pascal
1.
2.
3.
4.
5.
6.
IsCorrect := False;
try
  StrToInt(SomeText);
  IsCorrect := True;
except
end;


конечно это можно переписать немного иначе, но корректность первого способа (включая пустой блок except end ) это не отменяет:
Код: pascal
1.
2.
3.
4.
5.
6.
try
  StrToInt(SomeText);
  IsCorrect := True;
except
  IsCorrect := False;
end;
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497106
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2простейший пример, когда можно обойтись пустым except end :
Код: pascal
1.
2.
3.
4.
5.
6.
IsCorrect := False;
try
  StrToInt(SomeText);
  IsCorrect := True;
except
end;


конечно это можно переписать немного иначе, но корректность первого способа (включая пустой блок except end ) это не отменяет:
Код: pascal
1.
2.
3.
4.
5.
6.
try
  StrToInt(SomeText);
  IsCorrect := True;
except
  IsCorrect := False;
end;


Ложь.
Если бы ты мог привести полезный код, ты бы его привел.
А тебе пришлось обойтись надуманный примером, да еще и оговорку ввести.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497111
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД,

почему надуманный пример? вполне себе реальный пример проверки корректности введенного текста как целого числа, например в диалоге по нажатию кнопки OK))
И да, где я написал оговорку? Я привел два равнозначных варианта, имеющих один и тот же результат. Первый вариант использует пустой блок except end и этот пустой блок абсолютно корректен.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497113
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2чччД,

почему надуманный пример? вполне себе реальный пример проверки корректности введенного текста как целого числа, например в диалоге по нажатию кнопки OK))
И да, где я написал оговорку? Я привел два равнозначных варианта, имеющих один и тот же результат. Первый вариант использует пустой блок except end и этот пустой блок абсолютно корректен.
Ты настаиваешь, что привел пример своего реального (рабочего) кода?
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497115
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД,

не просто утверждаю, а клятвенно клянусь))) вполне себе реальный код)))

Кстати рекомендую посмотреть исходный код системной функции StrToIntDef :
Код: pascal
1.
2.
3.
4.
5.
6.
7.
function StrToIntDef(const S: string; Default: Integer): Integer;
var
  E: Integer;
begin
  Val(S, Result, E);
  if E <> 0 then Result := Default;
end;


что мы видим в данном коде? а видим мы то, что снаружи мы не узнаем, корректное ли значение было в параметре S. Может оно было корректное, но совпало со значением по умолчанию. А может было некорректное и функция вернула значение параметра Default. Возможное наличие факта ошибки никуда не передается, что аналогично пустому except end . Или Эмба тоже стреляет себе в ногу?
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497116
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2вполне себе реальный код)))
Он должен быть переписан, чтобы быть нормальным:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
try
  StrToInt(SomeText);
  IsCorrect := True;
except
 On EConvertError Do
  IsCorrect := False;
end;
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497117
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2а видим мы то, что снаружи мы не узнаем, корректное ли значение было в параметре S
Это потому, что семантика данной функции этого не подразумевает.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497119
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexeyasutp2вполне себе реальный код)))
Он должен быть переписан, чтобы быть нормальным:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
try
  StrToInt(SomeText);
  IsCorrect := True;
except
 On EConvertError Do
  IsCorrect := False;
end;


и получаем возможность получения неопределенного состояния переменной IsCorrect. Кто сказал, что возможно только исключение EConvertError?
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497120
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexeyasutp2а видим мы то, что снаружи мы не узнаем, корректное ли значение было в параметре S
Это потому, что семантика данной функции этого не подразумевает.ну то есть Эмбовские функции могут себе такую семантику позволить, а я в своем коде не могу, да? Еще раз напоминаю, что при использовании данной функцией мы не сможем узнать корректность исходной текстовой строки и соответственно не узнаем об ошибке. Противники использования пустого блока except end как раз этим и аргументируют)))
И уточню - я тоже считаю неправильным скрытие исключений во большинстве случаев, но при этом считаю, что в некоторых ситуациях это допустимо.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497122
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2и получаем возможность получения неопределенного состояния переменной IsCorrect
Если это переменная, а не имя функции, то код должен быть другим.

asutp2Кто сказал, что возможно только исключение EConvertError?
В том-то и дело, что, например, Access Violation ни коим образом не свидетельствует о некорректности строкового представления числового значения. Оно свидетельствует о кое-чём другом.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497123
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Еще раз напоминаю, что при использовании данной функцией мы не сможем узнать корректность исходной текстовой строки и соответственно не узнаем об ошибке
Ещё раз: семантика данной функции такова, что в случае невозможности преобразовать строку в число, она возвращает дефолтное значение. Если в процессе работы функции возникнет другая проблема она не станет глотать исключения.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497124
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2...Эмбовские функции могут себе такую семантику позволить, а я в своем коде не могу, да?...
Ссылаться на "взрослых дяденек" не стоит, даже в шутку.

asutp2...
И уточню - я тоже считаю неправильным скрытие исключений во большинстве случаев, но при этом считаю, что в некоторых ситуациях это допустимо.
Ты не смог привести примера, когда это допустимо. Например, StrToIntDef "с контролем" можно написать так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
function YourStrToIntDef(const aSrcStr : string; aDefValue : integer; out aIsCorrect : boolean) : integer
var
  fDummy : integer
begin
  val(aSrcStr, Result, fDummy);
  aIsCorrect := fDummy > 0;
 if not aIsCoffect then 
  Result := aDefValue; 
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497141
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

ок, ты меня убедил)) исключение AV должно доходить до глобального обработчика исключений

чччДasutp2...Эмбовские функции могут себе такую семантику позволить, а я в своем коде не могу, да?...
Ссылаться на "взрослых дяденек" не стоит, даже в шутку.
С чего это вдруг? Если для тебя Эмба это небожители, то ты наверное зря выбрал нашу профессию)))))))))) Я же пишу так, как мне позволяют мои внутренние убеждения и оснований не верить моим убеждениям нет (с) ))))))
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497222
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2...

чччДпропущено...

Ссылаться на "взрослых дяденек" не стоит, даже в шутку.
С чего это вдруг? Если для тебя Эмба это небожители, то ты наверное зря выбрал нашу профессию)))))))))) Я же пишу так, как мне позволяют мои внутренние убеждения и оснований не верить моим убеждениям нет (с) ))))))
Аргументы вроде "вон они ТАК делают" в данном случае говорят лишь о твоей затянувшейся инфантильности.
Количество закрывающих скобочек, наверное, тоже.
...
Вернись все же к коду, он куда лучше демонстрирует твои "убеждения".
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497451
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2,

авторЯ же пишу так, как мне позволяют мои внутренние убеждения

Главное что бы убеждения были такими, что бы юзеры твоей программы не плакали кровавыми слезами во время работы. И тебя и твою маму 'добрыми' словами не поминали. А так пиши по убеждениям, чё уж.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497496
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonasutp2,

авторЯ же пишу так, как мне позволяют мои внутренние убеждения

Главное что бы убеждения были такими, что бы юзеры твоей программы не плакали кровавыми слезами во время работы. И тебя и твою маму 'добрыми' словами не поминали. А так пиши по убеждениям, чё уж.
Ты не поверишь - мои юзеры не плачут, они даже наоборот, добровольно покупают даже подписку на обновления. А вот можешь ли ты сказать тоже самое о себе, я не знаю.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497507
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще безотносительно автора, не умаляя и т.д. ... чисто про обновления.
Егаис вон тоже покупают и обновляют, но плач в наличии )))
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39497520
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krapotkin,

1. есть принудительный софт, который хочешь или не хочешь, но приходится использовать. Например егаис, пфр и тому подобное. Не моё.
2. а есть обычный софт с большим количеством конкурентов, который покупается/продлевается, только если он неплох. Моё.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39498218
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2,

Будем надеяться, что твоё творение в очередной егаис не превратится :) Во всех смыслах.
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39498348
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не люблю школьников. (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39498353
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

надеюсь камень не в мой огород? :)
...
Рейтинг: 0 / 0
Пишу проект базы данных, система и передача данных
    #39498355
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
даже если им за 30! (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
58 сообщений из 58, показаны все 3 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Пишу проект базы данных, система и передача данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]