powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / двойное условие
25 сообщений из 31, страница 1 из 2
двойное условие
    #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
двойное условие
    #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
двойное условие
    #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
двойное условие
    #39707616
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirVVPкак правельно записать?

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

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

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

Вас не смущает, что WriteString это процедура или в свежих версиях её перековали в функцию?..
Пока еще процедура. Но вдруг ТС наследника наваял?
...
Рейтинг: 0 / 0
двойное условие
    #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
двойное условие
    #39707712
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirVVPкак правельно записать?А что хотелось сделать?
...
Рейтинг: 0 / 0
двойное условие
    #39707714
Олег Третьяков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все не правильно!
Вообще не понятно, что хочет проверить автор. Права на запись или наличие ini?
А как же ini.UpdateFile?
...
Рейтинг: 0 / 0
двойное условие
    #39707715
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Олег ТретьяковВсе не правильно!
Вообще не понятно, что хочет проверить автор. Права на запись или наличие ini?
А как же ini.UpdateFile?

defecatorЕсли не вникать в смысл кода
...
Рейтинг: 0 / 0
двойное условие
    #39707724
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олег ТретьяковА как же ini.UpdateFile?Это актуально для TMemIniFile, но не для обычного TIniFile
...
Рейтинг: 0 / 0
двойное условие
    #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
двойное условие
    #39707752
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Прочитал настройки.
2. Если они пустые, то вывести диалог настроек.
2.1. ОК = Сохранить настройки. Отмена = выход из приложения.
3. Соединиться.
4. Если ошибка соединения, то пункт 2.
...
Рейтинг: 0 / 0
двойное условие
    #39707757
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirVVPЯ только учусь...

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

Учиться следует по содержимому папки Demos в Delphi
...
Рейтинг: 0 / 0
двойное условие
    #39707766
Олег Третьяков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейд,
Да, точно. В какой-то старой версии приходилось это делать.
...
Рейтинг: 0 / 0
двойное условие
    #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
двойное условие
    #39708224
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirVVPтолько я не пойму как мне сделать проверку ключа ini.ValueExists('Options','DBMS', 'mysql')
Функция ValueExists возвращает true, если в секции Options имеется значение DBMS. Вы же хотите проверить, равно ли значение DBMS mysql. Для это нужно взять значение из [Options] DBMS, к примеру поместив в переменную, и сравнить значение переменной с 'mysql'.
...
Рейтинг: 0 / 0
двойное условие
    #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
двойное условие
    #39708261
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirVVP try
....
finally
showmessage ('Ошибка записи!');
end;
[/src]

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

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

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

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

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

а мне нужно проверить
('Options','DBMS', 'mysql')
...
Рейтинг: 0 / 0
двойное условие
    #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
двойное условие
    #39708372
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirVVPа мне нужно проверить
('Options','DBMS', 'mysql')
если существует ini.WriteString, то существует и ini.ReadString. Считываете значение, проверяете и всё.
...
Рейтинг: 0 / 0
двойное условие
    #39708377
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторini.WriteString

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


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