Показать сообщение отдельно
  #11  
Старый 09.02.2024, 23:45
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,018
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ага, как и предполагалось, где-то идет конвертация в AnsiString с неправильной кодовой страницей. Только вот я не ожидал, что она в параметрах происходит.

Кстати, переводить Edit1.Text в WideString, наверное, не обязательно.
Дефолтный String, который на самом деле UnicodeString полностью совместим с WideString (собственно, это один и тот же тип).

Т.о. можно сделать что-то типа:
Код:
      GlavFrm.FDQuery1.SQL.Text := 'INSERT INTO Malimet (tabel, name, birthday, citizenship, nationality, gender, military_rank, photo, password) VALUES (:tabel, :name, :birthday, :citizenship, :nationality, :gender, :military_rank, :photo, :password)';

      For I := 0 To GlavFrm.FDQuery1.Params.Count-1 Do
        If GlavFrm.FDQuery1.Params[i].DataType = ftString Then
          GlavFrm.FDQuery1.Params[i].DataType := ftWideString;

      GlavFrm.FDQuery1.ParamByName('tabel').AsString := Edit1.Text;
      GlavFrm.FDQuery1.ParamByName('name').AsString := UTF8Encode(Edit2.Text);
      GlavFrm.FDQuery1.ParamByName('birthday').Value := DateTimePicker1.Date;
      GlavFrm.FDQuery1.ParamByName('citizenship').AsString := ComboBox1.Text;
      GlavFrm.FDQuery1.ParamByName('nationality').AsString := ComboBox2.Text;
      GlavFrm.FDQuery1.ParamByName('gender').AsString := ComboBox3.Text;
      GlavFrm.FDQuery1.ParamByName('military_rank').AsString := ComboBox4.Text;
      GlavFrm.FDQuery1.ParamByName('photo').AsString := label8.Caption;
      GlavFrm.FDQuery1.ParamByName('password').AsString := Edit3.Text;
      GlavFrm.FDQuery1.ExecSQL;
Ответить с цитированием