Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.06.2010, 10:49
Muxa Muxa вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 80
Репутация: 10
По умолчанию WriteFile

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
written:cardinal;
begin
    str:='Test - Тест';
    WriteFile(H_File,str,Length(str),written,nil);
    FileClose(H_File);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  H_File:=CreateFileW('D:\test.txt',GENERIC_WRITE,FILE_SHARE_READ,
                      nil,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
  if (GetLastError()=INVALID_HANDLE_VALUE) then
     ShowMessage('Не удалось создать файл');
end;
Надо записать в файл вышеуказанную строку. Но почему-то пишет только абракадабру...
Ответить с цитированием
  #2  
Старый 22.06.2010, 11:17
Аватар для Marvel
Marvel Marvel вне форума
Начинающий
 
Регистрация: 14.06.2010
Адрес: Пятигорск
Сообщения: 121
Репутация: 24
По умолчанию

а вот так чем не устраивает:
Код:
var
  f: file;
  buf: PChar;
begin
  buf := 'текст';
  try
    AssignFile(f, 'file.txt');
    Rewrite(f, 1);
    BlockWrite(f,buf^,Length(buf));
    CloseFile(f);
  except
    ShowMessage('ошибка создания файла');
  end;
end;
__________________
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы...


ICQ: 593977748
Nick: Marvel
Ответить с цитированием
  #3  
Старый 22.06.2010, 11:44
Muxa Muxa вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 80
Репутация: 10
По умолчанию

Нужно именно на API.
Ответить с цитированием
  #4  
Старый 22.06.2010, 11:45
Аватар для Marvel
Marvel Marvel вне форума
Начинающий
 
Регистрация: 14.06.2010
Адрес: Пятигорск
Сообщения: 121
Репутация: 24
По умолчанию

вот так попробуй:
Код:
var
  H_File: THandle;
.....

procedure TForm1.Button1Click(Sender: TObject);
var
  str: PChar;
  written: cardinal;
begin
  str := 'Test - Тест';
  WriteFile(H_File,str^,Length(str),written,nil);
  FileClose(H_File);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  H_File := CreateFileW('D:\test.txt',GENERIC_WRITE,FILE_SHARE_READ,
                        nil,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
  if (GetLastError() = INVALID_HANDLE_VALUE) then
     ShowMessage('Не удалось создать файл');
end;

проверил, работает
__________________
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы...


ICQ: 593977748
Nick: Marvel

Последний раз редактировалось Marvel, 22.06.2010 в 11:52.
Ответить с цитированием
  #5  
Старый 22.06.2010, 15:40
Muxa Muxa вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 80
Репутация: 10
По умолчанию

У меня выводит в файле лишь - "T e s t - ".
P.S. Delphi2010

Последний раз редактировалось Muxa, 22.06.2010 в 15:44.
Ответить с цитированием
  #6  
Старый 22.06.2010, 16:08
Аватар для Marvel
Marvel Marvel вне форума
Начинающий
 
Регистрация: 14.06.2010
Адрес: Пятигорск
Сообщения: 121
Репутация: 24
По умолчанию

замените
Код:
str: PChar;
на
Код:
str: PAnsiChar;

это связано с тем, что Delphi 2009/2010 по умолчанию работают в Unicode. Отключить Unicode просто так нельзя, но если Unicode вообще не нужен, то проблема легко решается механической заменой string на AnsiString, char на AnsiChar, PChar на PAnsiChar.
__________________
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы...


ICQ: 593977748
Nick: Marvel

Последний раз редактировалось Marvel, 22.06.2010 в 16:37.
Ответить с цитированием
  #7  
Старый 22.06.2010, 18:19
Muxa Muxa вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 80
Репутация: 10
По умолчанию

Спасибо, разобрался.
Ответить с цитированием
  #8  
Старый 23.06.2010, 18:43
Muxa Muxa вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 80
Репутация: 10
По умолчанию

Цитата:
CreateFileW('D:\test.txt',GENERIC_WRITE,FILE_SHARE _READ,
nil,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
А как передать вместо "D:\test.txt" путь в String-строке? А то компилятор ругается на несовпадение String и PWideChar (при использовании префикса W) и несовпадение String и PAnsiChar при префиксе CreateFileA.

-----------
Разобрался

Последний раз редактировалось Muxa, 23.06.2010 в 18:57.
Ответить с цитированием
  #9  
Старый 23.06.2010, 19:46
Аватар для Marvel
Marvel Marvel вне форума
Начинающий
 
Регистрация: 14.06.2010
Адрес: Пятигорск
Сообщения: 121
Репутация: 24
По умолчанию

Код:
CreateFileW(PChar('D:\test.txt'),GENERIC_WRITE,FILE_SHARE_READ,nil,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
__________________
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы...


ICQ: 593977748
Nick: Marvel
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:10.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter