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

Delphi Sources



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

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

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
По умолчанию

а вот так чем не устраивает:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<b>var</b>
  f: <b>file</b>;
  buf: PChar;
<b>begin</b>
  buf := <font color="Navy">'текст'</font>;
  <b>try</b>
    AssignFile(f, <font color="Navy">'file.txt'</font>);
    Rewrite(f, 1);
    BlockWrite(f,buf^,Length(buf));
    CloseFile(f);
  <b>except</b>
    ShowMessage(<font color="Navy">'ошибка создания файла'</font>);
  <b>end;</b>
<b>end;</b>
__________________
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы...


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
По умолчанию

вот так попробуй:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<b>var</b>
  H_File: THandle;
.....
 
<b>procedure </b>TForm1.Button1Click(Sender: TObject);
<b>var</b>
  str: <b>PChar</b>;
  written: cardinal;
<b>begin</b>
  str := <font color="Navy">'Test - Тест'</font>;
  WriteFile(H_File,<b>str^</b>,Length(str),written,nil);
  FileClose(H_File);
<b>end;</b>
 
<b>procedure </b>TForm1.FormCreate(Sender: TObject);
<b>begin</b>
  H_File := CreateFileW(<font color="Navy">'D:\test.txt'</font>,GENERIC_WRITE,FILE_SHARE_READ,
                        <b>nil</b>,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
  <b>if </b>(GetLastError() = INVALID_HANDLE_VALUE) <b>then</b>
     ShowMessage(<font color="Navy">'Не удалось создать файл'</font>);
<b>end;</b>

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


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
По умолчанию

замените
Код:
1
str: PChar;
на
Код:
1
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
По умолчанию

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


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


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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