Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2011, 12:43   #1
rax9ray
 
Регистрация: 29.11.2011
Сообщений: 6
Печаль delphi, запись Pchar строки в файл

Помогите плз.Как записать строку Pchar в текстовый файл.Находил пару способов но криво копирует.Ссылки тоже подойдут//
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ClipBrd;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
private
  PrevHwnd: Hwnd;
  procedure WMChangeCBChain(var Msg: TWMChangeCBChain);
    message WM_CHANGECBCHAIN;
  procedure WMDrawClipboard(var Msg: TWMDrawClipboard);
    message WM_DRAWCLIPBOARD;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.WMChangeCBChain(var Msg: TWMChangeCBChain);
begin
  if PrevHWnd = Msg.Remove then
    PrevHWnd := Msg.Next;
  if Msg.Remove <> Handle then
    SendMessage(PrevHWnd, WM_CHANGECBCHAIN, Msg.Remove, Msg.Next);
end;

procedure TForm1.WMDrawClipboard(var Msg: TWMDrawClipboard);
var
  P: PChar;
  H: THandle;
begin
  SendMessage(PrevHWnd, WM_DRAWCLIPBOARD, 0, 0);
  if Clipboard.HasFormat(CF_TEXT) then
  begin
    H := Clipboard.GetAsHandle(CF_TEXT);
    P := GlobalLock(H);
 //Здесь должна быть запись в файл строки P
{вот такой способ я нашол} 
FileHandle := FileCreate('222.txt');
 FileWrite(FileHandle,p,lstrlen(p));
FileClose(FileHandle);
   
    GlobalUnlock(H);
  end;
  Msg.Result := 0;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  PrevHwnd := SetClipboardViewer(Handle);

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  ChangeClipboardChain(Handle, PrevHwnd);
end;

end.

Последний раз редактировалось rax9ray; 04.12.2011 в 14:29.
rax9ray вне форума Ответить с цитированием
Старый 04.12.2011, 14:09   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Находил пару способов но криво копирует.
Код в студию )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.12.2011, 15:11   #3
rax9ray
 
Регистрация: 29.11.2011
Сообщений: 6
По умолчанию

скинул код)
rax9ray вне форума Ответить с цитированием
Старый 04.12.2011, 15:22   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
P := GlobalLock(H);
А ты проверял что попадает в P?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.12.2011, 15:32   #5
rax9ray
 
Регистрация: 29.11.2011
Сообщений: 6
По умолчанию

Да,проверял-если вывести через memo вот так Memo1.SetTextBuf(P); то кривых символов не будет.Но мне нужна запись в файл а не в memo/
rax9ray вне форума Ответить с цитированием
Старый 04.12.2011, 16:30   #6
rax9ray
 
Регистрация: 29.11.2011
Сообщений: 6
По умолчанию

Оффтоп, проблема решилась)
rax9ray вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запись в файл с новой строки rowlin Общие вопросы C/C++ 6 22.04.2011 00:30
Запись хвоста ком. строки в файл Lazio Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 27.03.2011 21:18
Запись строки в файл SL1CK Общие вопросы Delphi 3 07.01.2010 16:20
Access violation на строке вида StrLCopy(PChar(st1),PChar(st2),10); malor Общие вопросы Delphi 1 11.07.2007 13:39