Форум: "Основная";
Текущий архив: 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.049 c