Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / двойное условие / 25 сообщений из 31, страница 1 из 2
25.09.2018, 12:39
    #39707606
VladimirVVP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure frmAdmin_bStartSQLiteServer_OnClick (Sender: TObject; var Cancel: boolean);
var
    s: string;
    ini:TInifile;
begin
    s := '';
    SelectDirectory('Caption', '', s);
    ini:= TIniFile.Create(ExtractFilePath (ParamStr (0))+'settings.ini');
    if ini.WriteString ('Options', 'server', s) AND ini.WriteString ('Options', 'DBMS','sqlite' ) then begin
    ini.Free;
    showmessage('Подключение выполнен успешно, программа будет перезагружена.');
    frmLogin.Close;
    OpenFile('start.bat');
    end else
    showmessage('Ошибка, Подключение не выполнено.');
end;



как правельно записать?

Код: pascal
1.
if ini.WriteString ('Options', 'server', s) AND ini.WriteString ('Options', 'DBMS','sqlite' ) then begin
...
Рейтинг: 0 / 0
25.09.2018, 12:53
    #39707613
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
Думаю вот что: если первое условие, т.е. ini.WriteString ('Options', 'server', s), окажется FALSE, то выполнение IF дальше не пойдет и ini.WriteString ('Options', 'DBMS','sqlite' ) даже не произойдет. Или так и было задумано? Если нет, следует ввести промежуточные переменные
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
var
   bServerOptionsSaved : boolean;
   bSqliteOptionsSaved : boolean;
begin
   bServerOptionsSaved  := ini.WriteString ('Options', 'server', s);
   bSqliteOptionsSaved  := ini.WriteString ('Options', 'DBMS','sqlite');
   
   if bServerOptionsSaved  and  bSqliteOptionsSaved  then ...
...
Рейтинг: 0 / 0
25.09.2018, 12:54
    #39707615
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
VladimirVVP
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure frmAdmin_bStartSQLiteServer_OnClick (Sender: TObject; var Cancel: boolean);
var
    s: string;
    ini:TInifile;
begin
    s := '';
    SelectDirectory('Caption', '', s);
    ini:= TIniFile.Create(ExtractFilePath (ParamStr (0))+'settings.ini');
    if ini.WriteString ('Options', 'server', s) AND ini.WriteString ('Options', 'DBMS','sqlite' ) then begin
    ini.Free;
    showmessage('Подключение выполнен успешно, программа будет перезагружена.');
    frmLogin.Close;
    OpenFile('start.bat');
    end else
    showmessage('Ошибка, Подключение не выполнено.');
end;




как правельно записать?

Код: pascal
1.
if ini.WriteString ('Options', 'server', s) AND ini.WriteString ('Options', 'DBMS','sqlite' ) then begin



Правильно вообще весь этот код переписать
Если не вникать в смысл кода, то как-то так

Код: 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.
procedure frmAdmin_bStartSQLiteServer_OnClick (Sender: TObject; var Cancel: boolean);
var
   ini : TInifile;
   Test : Boolean ;
begin
    s := '';
    SelectDirectory('Caption', '', s);
    ini:= TIniFile.Create(ExtractFilePath (ParamStr (0))+'settings.ini');
    try
       Test := ini.WriteString ('Options', 'server', s)
       if not Test then Exit ;
       Test := ini.WriteString ('Options', 'DBMS','sqlite' ) ;
    finally
      ini.Free;
      frmLogin.Close;
    end ;

    if Test then
     begin
          showmessage('Подключение выполнен успешно, программа будет перезагружена.');
          OpenFile('start.bat');
     end else
      showmessage('Ошибка, Подключение не выполнено.');
end;
...
Рейтинг: 0 / 0
25.09.2018, 12:54
    #39707616
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
VladimirVVPкак правельно записать?

Просто убери if, AND и then.

RTFM try-finally/except.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.09.2018, 13:00
    #39707628
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
Кроик Семёнini.WriteString ('Options', 'server', s), окажется FALSE

Вас не смущает, что WriteString это процедура или в свежих версиях её перековали в функцию?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.09.2018, 13:46
    #39707678
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
Dimitry SibiryakovКроик Семёнini.WriteString ('Options', 'server', s), окажется FALSE

Вас не смущает, что WriteString это процедура или в свежих версиях её перековали в функцию?..
Пока еще процедура. Но вдруг ТС наследника наваял?
...
Рейтинг: 0 / 0
25.09.2018, 14:03
    #39707698
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
Dimitry SibiryakovКроик Семёнini.WriteString ('Options', 'server', s), окажется FALSE

Вас не смущает, что WriteString это процедура или в свежих версиях её перековали в функцию?..

это упустил из внимания, если честно :)
отвечал на вопрос:

авторкак правельно записать?

Код: pascal
1.
if ini.WriteString ('Options', 'server', s) AND ini.WriteString ('Options', 'DBMS','sqlite' ) then begin
...
Рейтинг: 0 / 0
25.09.2018, 14:20
    #39707712
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
VladimirVVPкак правельно записать?А что хотелось сделать?
...
Рейтинг: 0 / 0
25.09.2018, 14:24
    #39707714
Олег Третьяков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
Все не правильно!
Вообще не понятно, что хочет проверить автор. Права на запись или наличие ini?
А как же ini.UpdateFile?
...
Рейтинг: 0 / 0
25.09.2018, 14:25
    #39707715
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
Олег ТретьяковВсе не правильно!
Вообще не понятно, что хочет проверить автор. Права на запись или наличие ini?
А как же ini.UpdateFile?

defecatorЕсли не вникать в смысл кода
...
Рейтинг: 0 / 0
25.09.2018, 14:44
    #39707724
Квейд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
Олег ТретьяковА как же ini.UpdateFile?Это актуально для TMemIniFile, но не для обычного TIniFile
...
Рейтинг: 0 / 0
25.09.2018, 15:03
    #39707743
VladimirVVP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
Я только учусь... по немного вникаю

1. прочитать setting.ini
2. если запись 'Options', 'server' и 'Options', 'DBMS' есть, то сообщит об этом пользователю
3. если нет то вывести диалог выбора папки
4. записать выбранный адрес в 'Options', 'server' и 'Options', 'DBMS', 'sqlite'
5. вывести сообщение (настройки изминены, программа будет перезагружена)
6. если записать не получилось то сообщить пользователю (ошибка)
7. перезагружаем программу

может типа
if запись нет then
{условия
либо if либо case}
else
showmessage('такая запись уже есть')
...
Рейтинг: 0 / 0
25.09.2018, 15:15
    #39707752
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
1. Прочитал настройки.
2. Если они пустые, то вывести диалог настроек.
2.1. ОК = Сохранить настройки. Отмена = выход из приложения.
3. Соединиться.
4. Если ошибка соединения, то пункт 2.
...
Рейтинг: 0 / 0
25.09.2018, 15:21
    #39707757
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
VladimirVVPЯ только учусь...

Плохому, судя по коду

Учиться следует по содержимому папки Demos в Delphi
...
Рейтинг: 0 / 0
25.09.2018, 15:32
    #39707766
Олег Третьяков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
Квейд,
Да, точно. В какой-то старой версии приходилось это делать.
...
Рейтинг: 0 / 0
26.09.2018, 10:19
    #39708215
VladimirVVP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
procedure frmAdmin_bBeackSQLite_OnClick (Sender: TObject; var Cancel: boolean);
var
    ini : TInifile;
begin
    ini:= TIniFile.Create(ExtractFilePath (ParamStr (0))+'settings.ini');
    if ini.ValueExists('Options', 'server') AND ini.ValueExists('Options','DBMS') then
    begin
         try
           ini.DeleteKey('Options', 'server');
           if ini.ValueExists('Options', 'server') then Exit ;
           ini.WriteString ('Options', 'DBMS','sqlite');
           if ini.ValueExists('DBMS','sqlite') then Exit ;
           showmessage('Возврат к использованию SQLite выполнен, программа будет перезагружена.');
           ini.Free;
           frmLogin.Close;
           OpenFile('start.bat');
           finally
           showmessage ('Ошибка записи!');
        end;
    end else
   showmessage ('Программа уже подключена к SQLite.');
 end;



давайте доработаем, в принцепе этот вариант работает..
только я не пойму как мне сделать проверку ключа ini.ValueExists('Options','DBMS', 'mysql')
...
Рейтинг: 0 / 0
26.09.2018, 10:26
    #39708224
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
VladimirVVPтолько я не пойму как мне сделать проверку ключа ini.ValueExists('Options','DBMS', 'mysql')
Функция ValueExists возвращает true, если в секции Options имеется значение DBMS. Вы же хотите проверить, равно ли значение DBMS mysql. Для это нужно взять значение из [Options] DBMS, к примеру поместив в переменную, и сравнить значение переменной с 'mysql'.
...
Рейтинг: 0 / 0
26.09.2018, 10:34
    #39708235
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
VladimirVVP
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
procedure frmAdmin_bBeackSQLite_OnClick (Sender: TObject; var Cancel: boolean);
var
    ini : TInifile;
begin
    ini:= TIniFile.Create(ExtractFilePath (ParamStr (0))+'settings.ini');
    if ini.ValueExists('Options', 'server') AND ini.ValueExists('Options','DBMS') then
    begin
         try
           ini.DeleteKey('Options', 'server');
           if ini.ValueExists('Options', 'server') then Exit ;
           ini.WriteString ('Options', 'DBMS','sqlite');
           if ini.ValueExists('DBMS','sqlite') then Exit ;
           showmessage('Возврат к использованию SQLite выполнен, программа будет перезагружена.');
           ini.Free;
           frmLogin.Close;
           OpenFile('start.bat');
           finally
           showmessage ('Ошибка записи!');
        end;
    end else
   showmessage ('Программа уже подключена к SQLite.');
 end;




давайте доработаем, в принцепе этот вариант работает..
тебе уже вчера сказали использовать try-finally
...
Рейтинг: 0 / 0
26.09.2018, 11:01
    #39708261
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
VladimirVVP try
....
finally
showmessage ('Ошибка записи!');
end;
[/src]

давайте доработаем

Давайте лучше закопаем поглубже и будем писать правильно, изучая, в том числе Demos
...
Рейтинг: 0 / 0
26.09.2018, 12:11
    #39708343
VladimirVVP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
schi,
Извените, но я в отличии от вас хотя бы пытаюсь написать а вот вы строите из себя супер пупер, а сами даже попытку сделать не можете, я то же могу посоветовать вам книги читать и что?
я же писал уже что учусь только а вы сразу (плохому ), знаете лучше, так покажите, не знаете, так зачем вообще комментируете..
...
Рейтинг: 0 / 0
26.09.2018, 12:13
    #39708348
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
VladimirVVPschi,
Извените, но я в отличии от вас хотя бы пытаюсь написать а вот вы строите из себя супер пупер, а сами даже попытку сделать не можете, я то же могу посоветовать вам книги читать и что?
я же писал уже что учусь только а вы сразу (плохому ), знаете лучше, так покажите, не знаете, так зачем вообще комментируете..

ты бы учился по книжке основам паскаля, а не на форуме
...
Рейтинг: 0 / 0
26.09.2018, 12:14
    #39708349
VladimirVVP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
goldmi45,
Проверка, существует ли заданный ключ в указанной секции:

function ValueExists(const Section, Ident: string): Boolean;

тоесть
ini.ValueExists('Options','DBMS')

а мне нужно проверить
('Options','DBMS', 'mysql')
...
Рейтинг: 0 / 0
26.09.2018, 12:15
    #39708350
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
VladimirVVPgoldmi45,
Проверка, существует ли заданный ключ в указанной секции:

function ValueExists(const Section, Ident: string): Boolean;

тоесть
ini.ValueExists('Options','DBMS')

а мне нужно проверить
('Options','DBMS', 'mysql')

что тебе непонятно вот здесь
goldmi45Функция ValueExists возвращает true, если в секции Options имеется значение DBMS. Вы же хотите проверить, равно ли значение DBMS mysql. Для это нужно взять значение из [Options] DBMS, к примеру поместив в переменную, и сравнить значение переменной с 'mysql'.
?
...
Рейтинг: 0 / 0
26.09.2018, 12:42
    #39708372
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
VladimirVVPа мне нужно проверить
('Options','DBMS', 'mysql')
если существует ini.WriteString, то существует и ini.ReadString. Считываете значение, проверяете и всё.
...
Рейтинг: 0 / 0
26.09.2018, 12:50
    #39708377
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
двойное условие
авторini.WriteString

Оберни процедуры ini.WriteString в свои функции, которые будут возвращать False или True и тогда всё получится
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / двойное условие / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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