Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.044 c
14-1117290488
Ломброзо
2005-05-28 18:28
2005.06.29
Как подписаться на буржуйскую группу новостей?


6-1111790626
Сеть
2005-03-26 01:43
2005.06.29
Подскажите способ простейшего обмена данными между двумя ip ? (


3-1116567937
yk
2005-05-20 09:45
2005.06.29
Выборка с учётом не существования записей


1-1117526237
KillerToxa
2005-05-31 11:57
2005.06.29
Глюки TRichEdit и TJvRichEdit


14-1117216490
sofs
2005-05-27 21:54
2005.06.29
порты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский