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

Вниз

Работа в D8   Найти похожие ветки 

 
h0use   (2004-02-09 16:58) [0]

Чем в Delphi 8 можно заменить строку типа:
FStream.WriteBuffer(Pointer(S)^,Length(S));
А то она выдает ошибку, что Pointer(S)^ - Invalid type cast.
В D7 этот код работает


 
VLAD-MAL   (2004-02-09 17:02) [1]

Нельзя!

Типы данных, не поддерживаемые в Delphi.Net:
- PChar;
- нетипизированные указатели;
- нетипизированные var и out-параметры;
- file of <тип>;
- real48;
- вариантные записи (записи, содержащие перекрывающиеся поля).

Потоки и нетипизированные указателив D8 недопустимы.


 
clickmaker   (2004-02-09 17:02) [2]

S - string?
тада WriteBuffer(S[1], Length(S))


 
h0use   (2004-02-09 17:21) [3]

S - string, но ведь S[1] это будет же первый символ...или в восьмерке это будет указатель на первый элемент?


 
h0use   (2004-02-09 17:27) [4]

Увы, я проверил [1] пишется всякая муть в результате :(


 
Serginio666   (2004-02-09 17:29) [5]

Не муть а Юникоде.


 
Serginio666   (2004-02-09 17:36) [6]

Честно говоря не видел 8 ку но очень хочется. Во всяком случае в Net такой вариант не прокатил бы, но в 8 ке через хэлперы возможно. Если хочешь в кодировке то через Encoding.
Смотри
public procedure Write(buffer: array of Byte; offset: Integer; count: Integer); virtual; abstract;
И
public function GetBytes(s: String): array of Byte; virtual;


 
Serginio666   (2004-02-09 17:39) [7]

Stream.Write
Encoding.GetBytes


 
h0use   (2004-02-10 11:10) [8]

А подробнее?
Вот так пишет Борланд в восьмерке:

procedure TStrings.SaveToFile(const FileName: string; Encoding: System.Text.Encoding);
var
Stream: TStream;
begin
Stream := TFileStream.Create(FileName, fmCreate);
try
SaveToStream(Stream, Encoding);
finally
Stream.Free;
end;
end;

rocedure TStrings.SaveToStream(Stream: TStream; Encoding: System.Text.Encoding);
var
Buffer, Preamble: array of Byte;
begin
if Encoding = nil then
Encoding := System.Text.Encoding.Default;
Buffer := Encoding.GetBytes(GetTextStr);
Preamble := Encoding.GetPreamble;
if Length(Preamble) > 0 then
Stream.WriteBuffer(Preamble, Length(Preamble));
Stream.WriteBuffer(Buffer, Length(Buffer));
end;

Но это для TStrings. Потом я не понимаю, а где они берут ту информацию, что пишут? Разъясните что да как и как на основе этого записать одну строку типа String?


 
h0use   (2004-02-10 12:06) [9]

Так есть идеи или нет?


 
Serginio666   (2004-02-10 12:48) [10]

А getTextStr это что???? Посмотри внимательней
Serginio666 (09.02.04 17:36) [6]
А берут они ее из MSDN.
Кроме всего прочего скачай http://www.aisto.com/roeder/dotnet/
Reflector for .NET
Он переводит код из IL в нормальный язык программирования.
И можешь посмотреть как реализованы базовые классы Net


 
h0use   (2004-02-10 14:12) [11]

function TStrings.GetTextStr: string;
var
Buffer: StringBuilder;
I, Count: Integer;
begin
Count := GetCount;
Buffer := StringBuilder.Create;
for I := 0 to Count - 1 do
begin
Buffer.Append(Get(I));
Buffer.Append(LineBreak);
end;
Result := Buffer.ToString;
end;

Вот только что такое StringBuilder я не нашел :(


 
Serginio666   (2004-02-10 14:24) [12]

Скачиваешь
http://www.aisto.com/roeder/dotnet/
Ищешь в mscorlib/mscorlib.dll/System.Text StringBuilder и там смотришь ее реализацию.
По сути это динамическая строка, и если ее капасити не превышает двойного размера строки (и там в разных потоках) то ToString выдает ссылку на строку в StringBuilder.
А еще лучше покупаешь книгу по C# и там все нетовские классы описаны. C# не очень сложен.


 
Serginio666   (2004-02-10 14:36) [13]

А вопросы по Net лучше задавай на
http://www.rsdn.ru/Forum/MsgList.aspx?mid=533746&flat=0
или
http://www.gotdotnet.ru/


 
h0use   (2004-02-10 15:19) [14]

Да я бы задовал там, но они там на Си ответы дают, а я Дельфинист-пасквилянт :). Потом D8 это все же больше Делфи, поэтому конструкции не всегда похожи на шарповские.


 
Serginio666   (2004-02-10 15:30) [15]

Там половина бывших Дельфистов. Не растраивайся.
И не на Си а на C# а это большая разница.
А если очень сильно надо то и на Delphi не проблема.


 
h0use   (2004-02-10 15:42) [16]

Кстати Reflection идет вместе с Делфой


 
Игорь Шевченко   (2004-02-10 15:57) [17]

Ну вот, дождались и мы соответствующих вопросов по D8 :))


 
h0use   (2004-02-10 16:46) [18]


> Игорь Шевченко © (10.02.04 15:57) [17]

А где еще такие топики обсуждались?



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

Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.031 c
1-79950
Khabibulin
2004-02-13 21:25
2004.02.25
Открыть с помощью ...


1-79706
maker
2004-02-13 15:18
2004.02.25
AA&N IDCT


4-80352
Ivan K.
2003-12-18 07:43
2004.02.25
Как получить названия окон?


14-80252
int64
2004-02-04 12:50
2004.02.25
Together от Borland.


1-79794
SergeyV
2004-02-13 14:30
2004.02.25
Отрисова формы по ходу обработки данных





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский