Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4

Модерирует : ShIvADeSt

ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SIgor33

Цитата:
qryTools.SQL.Text := 'insert into tools (frame, number, start, rsite_id, ' +
  'alarm , mo)' + #13#10 + 'values (''' + Frame + ''', ''' + FaultNo + ''', :DateTime' +
  ', ''' + RSite + ''', ''' + fType + ''', ''' + MO + ''');' + #13#10;
  qryTools.ParamByName('DateTime').AsDateTime := StrToDateTime(FaultDate + ' ' + FaultTime);  

и P.S. тоже читать надо

Цитата:
PS. Какая-то мордашка вылезла в коде
Там должно быть : D
 


Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 09:16 25-06-2009
Grande



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SIgor33
А там, где морда ухмыляющаяся
 
Добавлено:
f3ka
Есть, оказывается, журналирование запросов.
Пойду, поэкспериментирую. О результатах доложу
Спасибо за наводку.

Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 09:32 25-06-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Grande
 
Что бы не было никаких проблем с преобразованиями данных на сервере, всегда нужно использовать параметры. Тогда не будет проблем ни с запятой в числах ни с кавычкой в строках, ни с форматом дат.

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 11:45 25-06-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volser

Цитата:
qryTools.ParamByName('DateTime').AsDateTime := StrToDateTime(FaultDate + ' ' + FaultTime);  

вы вот это видите???
Grande
тут может быть только другая проблема в то что где то в другом месте запроса возникает например лишняя запятая или кавычка...
З.Ы. а вообще использование параметров вместо динамического формирования строки чаще всего помогает решить проблему некорректных запросов...

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 11:50 25-06-2009 | Исправлено: f3ka, 12:02 25-06-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka
 
Да я видел. Я имел в виде что что это
 

Цитата:
qryTools.SQL.Text := 'insert into tools (frame, number, start, rsite_id, ' +
  'alarm , mo)' + #13#10 + 'values (''' + Frame + ''', ''' + FaultNo + ''', ateTime' +
  ', ''' + RSite + ''', ''' + fType + ''', ''' + MO + ''');' + #13#10;
  qryTools.ParamByName('DateTime').AsDateTime := StrToDateTime(FaultDate + ' ' + FaultTime);  

 
нужно все переписать через параметры и отказаться от динамического формирования строки, как то так
 

Код:
 
'insert into tools (frame, number, start, rsite_id, alarm , mo)' + #13#10 +  
'values (:frame, :number, :start, :rsite_id, :alarm , :mo)';
 

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 12:10 25-06-2009 | Исправлено: volser, 12:11 25-06-2009
greenpc

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka
volser
имхо в свое время было замечено что нужно передавать параметрами
даты-время, float c дробной частью( что в прицепе и является дата-время) и строку (пример:у меня вылетало при 3х кавычках в строке. не верная строка sql - если дампом посмотреть то так и есть )
остальное вроде всеравно т.е. сила привычки

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 13:18 25-06-2009 | Исправлено: greenpc, 13:27 25-06-2009
scroollocker

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте, уважаемые профессионалы!
У меня возникла проблема с закачкой файла на ФТП
после нажатия кнопки, возникает ошибка:" Access violation at address 0040921A'"  
Помогите разобраться, я начинающий кодер и мне сложно!
Пожалуйста!
вот приведу код програмы:

Код:
 
uses
  Windows, Messages, SysUtils, Variants, Classes,   Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls, wininet, Mask, ComCtrls;
 
var
 conn_param,inet_open : hinternet;
 AboutPC, ftpfilename, filename:pchar;
 port: integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
    Port:=21;
    GetMem(AboutPC,100); //выделил память
    AboutPC:=Pchar('любая String строка.txt'); //перевел cтринг в Пчар
    filename:='C:\Info_.txt';
    ftpfilename:='/test/Info_';
    strcat(ftpfilename,AboutPC); //добавил в конец фтпфайлнэйм - ЭбаутПиСи
    inet_open := internetopen('iexplore',INTERNET_OPEN_TYPE_DIRECT,  nil,nil,0);
    conn_param := internetconnect(inet_open,'ftp.ru',port,'Name','Pass',INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);  
    sleep(100);
    ftpputfile(conn_param,filename,ftpfilename,FTP_TRANSFER_TYPE_UNKNOWN,0);
    internetclosehandle(conn_param);
    internetclosehandle(inet_open) ;
    if true then
    showmessage('Good');
end;
end.

Всего записей: 5 | Зарегистр. 10-10-2007 | Отправлено: 14:23 25-06-2009 | Исправлено: scroollocker, 14:25 25-06-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
scroollocker
На какой строке вылетает ошибка?
 
Добавлено:
Не умеешь работать с PChar работай со строками.
 

Код:
 
var
  conn_param,inet_open : hinternet;
  AboutPC, ftpfilename, filename: string;
  port: integer;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
    Port := 21;
    AboutPC := 'любая String строка.txt'; //перевел cтринг в Пчар
    filename := 'C:\Info_.txt';
    ftpfilename := '/test/Info_';
    ftpfilename := ftpfilename + AboutPC;
    inet_open := internetopen('iexplore',INTERNET_OPEN_TYPE_DIRECT,  nil,nil,0);
    conn_param := internetconnect(inet_open,'ftp.ru',port,'Name','Pass',INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);
    sleep(100);
    ftpputfile(conn_param,PChar(filename),PChar(ftpfilename),FTP_TRANSFER_TYPE_UNKNOWN,0);
    internetclosehandle(conn_param);
    internetclosehandle(inet_open) ;
    if true then
    showmessage('Good');
end;
 
 

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 14:28 25-06-2009
scroollocker

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
volser
 
Большое человеческое Спасибо!
 

Всего записей: 5 | Зарегистр. 10-10-2007 | Отправлено: 16:46 25-06-2009
gogaman



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите решить задачу
задачка вроде простая но для меня оказалась трудно решима (нет опыта)
вобщем скачал я делфи 2009
задача: форма и 2 кнопки которые запускают 2 ехе файла вшытых в ехе
путем тыка вот что получилось

Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellApi;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    StaticText1: TStaticText;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
    RS : TResourceStream;
begin
    RS := TResourceStream.Create(Hinstance, 'Resource_1', RT_RCData);
    ShellExecute(Handle, 'open', '1.exe', nil, nil, SW_SHOWNORMAL);
    RS.Free;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
    RS : TResourceStream;
begin
    RS := TResourceStream.Create(Hinstance, 'Resource_2', RT_RCData);
    ShellExecute(Handle, 'open', '2.exe', nil, nil, SW_SHOWNORMAL);
    RS.Free;
end;
 
end.

файлы 1 и 2.ехе добавляю через меню Project/Resources
и не работает хотя собирает без ошибок
добавлял тхт файл в ресурс нормально запускает при нажатии кнопки а ехе не хочет

Всего записей: 583 | Зарегистр. 22-06-2005 | Отправлено: 13:23 26-06-2009 | Исправлено: gogaman, 13:24 26-06-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сохрани файл на диск потом запускай его.

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 13:28 26-06-2009
Grande



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нельзя ли, уважаемые знатоки, задать еще вопрос?
Суть его такова: имеется экземпляр TQuery. Вызываем его метод Open. А  как узнать, когда сей запрос выполнился?
Спасибо.
(Delphi7, PostgreSQL, ZeosBDO).

Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 13:53 26-06-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Событие компонента AfterOpen.

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 13:56 26-06-2009
Grande



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volser
Это событие, как я понимаю, наступает после открытия запроса, независимо от того, выполнился он, или нет. Или я неправ?

Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 14:01 26-06-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Grande
 
Тогда я не совсем понимаю, что значит не выполнился запрос?

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 14:10 26-06-2009
gogaman



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volser
а как ето реализовать и желательно чтоб потом удалять файлы сохраненые
 
вобщемто ети ехе ето бантики собраные в исполняемый
1 копирует 2 файла в system32, добавляет запись в реестр и 1 файл инсталить наверно (в бантике zapusk.exe /install)
2 бантик соответсвено все ето удаляет
вот решил собрать ето в кучу чтоб был 1 файл

Всего записей: 583 | Зарегистр. 22-06-2005 | Отправлено: 14:13 26-06-2009 | Исправлено: gogaman, 14:18 26-06-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gogaman
 
Как то так

Код:
 
procedure TForm1.Button1Click(Sender: TObject);
var
  RS: TResourceStream;
  M: TMemoryStream;
  AFileName: String;
begin
  RS := TResourceStream.Create(Hinstance, 'Resource_1', RT_RCData);
  try
    M := TMemoryStream.Create;
    try
      M.LoadFromStream(RS);
      AFileName := '1.exe';
      M.SaveToFile(AFileName);
      ShellExecute(Handle, 'open', PChar(AFileName), nil, nil, SW_SHOWNORMAL);
    finally
      M.Free;
    end;
  finally
    RS.Free;
  end;
end;
 

 
Удалять можно после закрытия главного приложения.

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 14:20 26-06-2009
Grande



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volser

Цитата:
Тогда я не совсем понимаю, что значит не выполнился запрос?

После отправки запроса на сервер и до его выполнения проходит какое-то время. А как выяснить, что данные уже внесены в базу (либо данные изменены)?

Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 14:24 26-06-2009
greenpc

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Grande
думаю Query.active =true
хотя AfterOpen - Occurs after an application completes opening a dataset and before any data access occurs.

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 14:25 26-06-2009 | Исправлено: greenpc, 14:33 26-06-2009
Grande



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greenpc
Имеете в виду
Код:
while Query.active =true ?

Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 14:30 26-06-2009 | Исправлено: Grande, 14:30 26-06-2009
   

Страницы: 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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru