![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Регистрация: 11.12.2006
Сообщений: 6
|
![]()
А почему когда я создаю новый Application, то при создании процедуры обработки нажатия кнопки
var T:Text; procedure TForm1.Button1Click(Sender: TObject); begin Assign(T,'C:\Text.txt'); ReWrite(T); WriteLn(T,'fdfsdf'); end; после компиляции выдает ошибку на строке Assign [Error] Unit1.pas(30): Incompatible types: 'TPersistent' and 'Text' Хотя в консольном варианте работает без проблем. |
![]() |
![]() |
![]() |
#12 |
Форумчанин
Регистрация: 18.04.2007
Сообщений: 135
|
![]()
попробуй AssignFile
|
![]() |
![]() |
![]() |
#13 |
Регистрация: 11.12.2006
Сообщений: 6
|
![]()
Спасибо, но я уже сам понял ошибку и работает сейчас попробую соединить с комом.
|
![]() |
![]() |
![]() |
#14 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
![]()
f:textfile;
... assignfile
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
![]() |
![]() |
![]() |
#15 |
Регистрация: 11.12.2006
Сообщений: 6
|
![]()
Следующая конструкция
var T:textfile; procedure TForm1.Button1Click(Sender: TObject); begin AssignFile(T,'COM1'); Rewrite(T); WriteLn(T,'fff'); CloseFile(T); end; После компиляции и нажатия на соответствующую кнопку выдает окно File Access denied, если закоментировать Rewrite(), то выдастся сообщение Error I/O 103. Как с этим бороться? |
![]() |
![]() |
![]() |
#16 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
![]()
как вы себе представляете процедуру rewrite в аспекте COM порта ?
reset
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
![]() |
![]() |
![]() |
#17 |
Регистрация: 11.12.2006
Сообщений: 6
|
![]()
Попробовал reset, но результат тот же: File access denied
|
![]() |
![]() |
![]() |
#18 |
Форумчанин
Регистрация: 18.04.2007
Сообщений: 135
|
![]()
держи юнит
unit Unit1; interface uses Windows; type TComPort = class private hFile: THandle; public constructor Create; destructor Destroy; override; function InitCom(BaudRate, PortNo: Integer; Parity: Char; CommTimeOuts: TCommTimeouts): Boolean; procedure CloseCom; function ReceiveCom(var Buffer; Size: DWORD): Integer; function SendCom(var Buffer; Size: DWORD): Integer; function ClearInputCom: Boolean; end; implementation uses SysUtils; constructor TComPort.Create; begin inherited; CloseCom; end; destructor TComPort.Destroy; begin CloseCom; inherited; end; function TComPort.InitCom(BaudRate, PortNo: Integer; Parity: Char; CommTimeOuts: TCommTimeouts): Boolean; var FileName: string; DCB: TDCB; PortParam: string; begin result := FALSE; FileName := 'Com' + IntToStr(PortNo); {имя файла} hFile := CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if hFile = INVALID_HANDLE_VALUE then exit; //установка требуемых параметров GetCommState(hFile, DCB); //чтение текущих параметров порта PortParam := 'baud=' + IntToStr(BaudRate) + ' parity=' + Parity + ' data=8 stop=1 ' + 'octs=off'; if BuildCommDCB(PChar(PortParam), DCB) then begin result := SetCommState(hFile, DCB) and SetCommTimeouts(hFile, CommTimeOuts); end; if not result then CloseCom; end; procedure TComPort.CloseCom; begin if hFile < > INVALID_HANDLE_VALUE then CloseHandle(hFile); hFile := INVALID_HANDLE_VALUE; end; function TComPort.ReceiveCom(var Buffer; Size: DWORD): Integer; var Received: DWORD; begin if hFile = INVALID_HANDLE_VALUE then raise Exception.Create('Не открыта запись в Com порт'); if ReadFile(hFile, Buffer, Size, Received, nil) then begin Result := Received; end else raise Exception.Create('Ошибка приема данных: ' + IntToStr(GetLastError)); end; function TComPort.SendCom(var Buffer; Size: DWORD): Integer; var Sended: DWORD; begin if hFile = INVALID_HANDLE_VALUE then raise Exception.Create('Не открыта запись в Com порт'); if WriteFile(hFile, Buffer, Size, Sended, nil) then begin Result := Sended; end else raise Exception.Create('Ошибка передачи данных: ' + IntToStr(GetLastError)); end; function TComPort.ClearInputCom: Boolean; begin if hFile = INVALID_HANDLE_VALUE then raise Exception.Create('Не открыта запись в Com порт'); Result := PurgeComm(hFile, PURGE_RXCLEAR); end; end. |
![]() |
![]() |
![]() |
#19 |
Вот я и
Форумчанин
Регистрация: 07.04.2007
Сообщений: 501
|
![]()
Квэнди, я с тобой не согласен, еще как работает и в универе, и дома...Я соединил комп и ноут...
А вот с этим согласен на 95%....5%-хакерам...
Исходники программ - http:\\www.kort.3dn.ru
|
![]() |
![]() |
![]() |
#20 | |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
![]() Цитата:
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Отправить запрос | kommunist | Общие вопросы .NET | 4 | 30.06.2008 00:47 |
Ethernet . 'поток E1' ? | Artem25 | Свободное общение | 0 | 09.10.2007 17:44 |
как отправить сообщения на Асю (icq) | Ermak | Работа с сетью в Delphi | 8 | 19.09.2007 19:57 |
Помогите отправить SMS на мегафон | =LeonZone= | Работа с сетью в Delphi | 17 | 27.08.2007 19:12 |
работа с Ethernet пакетами | kdaemonv | Работа с сетью в Delphi | 4 | 06.02.2007 13:37 |