Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Tstring   Найти похожие ветки 

 
TORT   (2005-06-06 18:06) [0]

привет народ подскажите пожалуйста Как не создавая всяких мемо итд просто создать переменную типа
Tstring и сохранить ее значение в тхт?


 
Юрий Зотов ©   (2005-06-06 18:09) [1]

Если объясните, что такое Tstring, то Вам, наверное, смогут ответить.


 
pasha_golub ©   (2005-06-06 18:10) [2]

type
Tstring = string;

var
F: text;
S: Tstring;

begin
AssignFile(f,"foo.txt");
Rewrite(f);
S := "mama washing rama";
WriteLn(f,s);
CloseFile(f);
end;


 
TORT   (2005-06-06 18:11) [3]

спасибо попробую
PS вот это реакция


 
pasha_golub ©   (2005-06-06 18:13) [4]

TORT   (06.06.05 18:11) [3]
спасибо попробую
Лучше не надо. Ибо я абсолютно не уверен, что это то, что нужно... :0)


 
jack128 ©   (2005-06-06 18:15) [5]

pasha_golub ©   (06.06.05 18:10) [2]
Хитер ;)  А я вот так хочу

type
Tstring = Integer;

var
F: text;
S: Tstring;

begin
AssignFile(f,"foo.txt");
Rewrite(f);
S := 10;
WriteLn(f,s);
CloseFile(f);
end;


:-)


 
pasha_golub ©   (2005-06-06 18:16) [6]

jack128 ©   (06.06.05 18:15) [5]
Вау... Шаман. :0)


 
Просто Джо ©   (2005-06-06 18:23) [7]

Мелко мыслите, товарище! Надо ООП-нуть по полной :)


 TString = class
 private
   FString: string;
 public
   constructor Create (AString: string); reintroduce;
   procedure SaveToFile (AFileName: string);
 end;

implementation

constructor TString.Create(AString: string);
begin
 inherited Create;
 FString := AString
end;

procedure TString.SaveToFile(AFileName: string);
var
 FileVar: TextFile;
begin
 AssignFile (FileVar,AFileName);
 Rewrite(FileVar);
 try
   WriteLn (FString)
 finally
   CloseFile (FileVar);
 end;
end;


Ы? ;-)


 
pasha_golub ©   (2005-06-06 18:29) [8]

Просто Джо ©   (06.06.05 18:23) [7]
Е-мае...


 IString = interface
 ["{A738C8C9-F469-48BA-BD3F-44261B34FA43}"]
  procedure SaveToFile(S: string);
 end;

 TString = class(TInterfacedObject, IString)
 private
  FString: string;
 public
  constructor Create (AString: string); reintroduce;
  procedure SaveToFile(S: string);
 end;


 
pasha_golub ©   (2005-06-06 18:31) [9]

Удалено модератором


 
Virgo_Style ©   (2005-06-06 18:51) [10]

Похоже на "эволюцию программиста" %-)


 
jack128 ©   (2005-06-06 18:56) [11]

Virgo_Style ©   (06.06.05 18:51) [10]
Эволюция еще не закончилась :-)

type
 TString = class(TInterfacedObject, IUnknown, IDispatch)
 private
   fString: string;
 protected
   { IDispatch }
   function GetTypeInfoCount(out Count: Integer): HResult; stdcall;
   function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult; stdcall;
   function GetIDsOfNames(const IID: TGUID; Names: Pointer;
     NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; stdcall;
   function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
     Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
 public
   constructor  Create(AStr: string);
 end;

constructor TString.Create(AStr: string);
begin
 inherited;
 fString := AStr;
end;

function TString.GetIDsOfNames(const IID: TGUID; Names: Pointer;
 NameCount, LocaleID: Integer; DispIDs: Pointer): HResult;
type
 TDispIDsArray = array [0..MaxInt div SizeOf(TDISPID) - 1] of TDISPID;
 PDispIDsArray = ^TDispIDsArray;

 TNameArray = array [0..MaxInt div SizeOf(PWideChar) - 1] of PWideChar;
 PNameArray = ^TNameArray;
var
 _DispIDs: PDispIDsArray absolute DispIDs;
 _Names: PNameArray absolute Names;
begin
 if (NameCount = 1) and AnsiApperCase(_Names[0]) = "SAVETOFILE" then
 begin
   Result := S_OK;
   _DispIDs[0] := 1;
 end else
   Result := DISP_E_UNKNOWNNAME;
end;

function TString.GetTypeInfo(Index, LocaleID: Integer;
 out TypeInfo): HResult;
begin
 Pointer(TypeInfo) := nil;
 Result := E_NOTIMPL;
end;

function TString.GetTypeInfoCount(out Count: Integer): HResult;
begin
 Count := 0;
 Result := S_OK;
end;

function TString.Invoke(DispID: Integer; const IID: TGUID;
 LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo,
 ArgErr: Pointer): HResult;
var
 _Params: TDISPPARAMS absolute Params;
 _ExcepInfo: PExcepInfo absolute ExcepInfo;
 FileName: string;
 FileVar: TextFile;
begin
 Result := DISP_E_MEMBERNOTFOUND;
 try
   if (DispID <> 1) or (Flags <> DISPATCH_METHOD) then Exit;
   if _Params.cArgs <> 1 then
   begin
     Result := DISP_E_BADPARAMCOUNT;
     Exit;
   end;
   Filename := _Params.rgvarg[0];
   AssignFile (FileVar, FileName);
   Rewrite(FileVar);
   try
     WriteLn (FString)
   finally
    CloseFile (FileVar);
   end;    
   Result := S_OK;
 except
   on E: Exception do
   begin
     Result := DISP_E_EXCEPTION;
     ZeroMemory(_ExcepInfo, SizeOf(TExcepInfo));
     _ExcepInfo.wCode := 1001;
     _ExcepInfo.bstrSource := "Ошибка класса:" + E.ClassName ;
     _ExcepInfo.bstrDescription := E.Message;
   end;
 end;
end;

//-------------------------------------------------------
//   Пример использования
//-------------------------------------------------------

var
 Str: OleVariant;

begin
 Str := TString.Create("Мама мыла раму") as IDispatch;
 Str.SaveToFile("c:\test.txt");
end;


 
jack128 ©   (2005-06-06 19:11) [12]

Мда. Маленькие недочеты
а) было inherited стало inherited Create;
b) было AnsiApperCase стало AnsiUpperCase
c) было Filename := _Params.rgvarg[0]; стало Filename := OleVariant(_Params.rgvarg[0]);
b) было WriteLn (FString) стало WriteLn (FileVar, FString)
e) к проэкту в обязательном порядке нужно подключить ComObj, иначе варианты типа Dispatch не могут вызыватьметоды/свойства


 
Просто Джо ©   (2005-06-06 19:22) [13]

Щас придет автор вопроса и скажет:
-- А чё это вы тут делаете, а? (ц) кинофильм.

:))


 
TORT   (2005-06-06 19:39) [14]

НУ ВОТ! ДАЖЕ РЕПЛИКУ МОЮ УКРАЛИ ;)


 
VMcL ©   (2005-06-06 20:09) [15]

>>Просто Джо
>>pasha_golub

Господа, а на фига вы конструктор reintroduce"ите? Он же у базового класса не виртуальный.


 
Просто Джо ©   (2005-06-06 20:32) [16]


>  [15] VMcL ©   (06.06.05 20:09)

А шобы не вводить во искушение создавать так-с: TString.Create;
Особенности реалызации! :-)


 
Просто Джо ©   (2005-06-06 20:35) [17]


>  [16] Просто Джо ©   (06.06.05 20:32)

Кхм...че-то я заработался :)


 
pasha_golub (temp)   (2005-06-07 13:05) [18]

VMcL ©   (06.06.05 20:09) [15]
Я тупо у Женьки скопировал


 
pasha_golub ©   (2005-06-07 13:13) [19]

VMcL ©   (06.06.05 20:09) [15]
Даже не видел, что там конструктор переобъявленный. :)


 
VMcL ©   (2005-06-07 13:15) [20]

Удалено модератором


 
kot andrei   (2005-06-07 13:19) [21]

ни хрена себе вы заморочались...



Страницы: 1 вся ветка

Текущий архив: 2005.06.29;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.035 c
14-1117561140
Juice
2005-05-31 21:39
2005.06.29
D8, D2005. Правильный выбор?


1-1118078693
Петя
2005-06-06 21:24
2005.06.29
будет слаживать произвольное количество строк!!


3-1116422713
Иг
2005-05-18 17:25
2005.06.29
Как достучаться к функциям Ацеса из адо?


1-1118234991
Just3r~
2005-06-08 16:49
2005.06.29
Переход на новую версию


1-1117607686
vidiv
2005-06-01 10:34
2005.06.29
device pixels/inch