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

Вниз

Вопросы по строкам   Найти похожие ветки 

 
Beginner3000   (2003-07-16 00:42) [0]

Вопросы по строкам
не проблемные, а так, для общего развития:
1.
Вот тут люди уважаемые когда-то пример давали
FileStream.ReadBuffer(String[1],length);
или
FileStream.ReadBuffer(ArrayOfChar[0],length);
однако у меня это всё заработало только для явных
ansistring и ansichar, иначе из текстового файла какой-то мусор вышкарябывает
(полдня мозги размножал)
в д7 настроек не менял - значит должно было быть:
string=ansistring, char=ansichar ?

2. Там же при использовании ansistring компилятор бурчит о том, что так можно но unsafe.
Отсюда вопрос:
если string[1] unsafe, pChar unsafe,
тогда реализация через ArrayOfAnsiChar[0] действительно нормальная, или компилятор её просто не учёл? :)

3. И тогда как правильнее писать через WriteBuffer без поинтеров


 
Beginner3000   (2003-07-16 23:47) [1]

попробовал
var
...
strFinalyHtml:ansistring;
iFileLength: Integer;
Buffer: array of AnsiChar;
begin
...
SetLength(Buffer,iFileLength);
StrPCopy(Buffer[0],strFinalyHtml); здесь у неё хронические проблемы типов
ResultFile.WriteBuffer(Buffer[0],iFileLength);
...
end;

Срабатывает только StrPCopy(pointer(Buffer),strFinalyHtml);
но поинтер опять же ансэйф
--------------------------------------
тихо сам с собою я веду беседу


 
Palladin ©   (2003-07-17 00:00) [2]

что то какието небылицы...


> ансэйф

а ты хоть видел описание StrPCopy и что там принимается в параметрах?


 
Beginner3000   (2003-07-17 00:23) [3]

забыл указать, что пишу под д7
StrPCopy
в том то и дело, там принимается pChar
но почему в других функциях первый элемент массива прокатывает,
а здесь - нет
мало того, в примере борландовском вообще просто массив задаётся,
у меня это естественно не работает
(кстати у них там полно ошибок в примерах функций, работающих
со строками, тот же WriteBuffer)


 
Palladin ©   (2003-07-17 00:50) [4]

а где там пример в WriteBuffer?
запости сюда...
интересно


 
Beginner3000   (2003-07-17 01:20) [5]

не могу щас
завтра если ветка цела будет
может и ошибся, может не WriteBuffer, но стопудово при работе
с потоками

но вопрос не в этом, вопрос в сэйф коде при работе со строками


 
Morfein ©   (2003-07-17 02:06) [6]

>> 3. И тогда как правильнее писать через WriteBuffer без поинтеров
Если бы учился писать через поинтеры, не задавал бы глупых вопросов и не ломал голову: всё рано или поздно приводится к адресам. Только в делфи это делается через ж*пу - многократные приведения типов вроде как при передаче var параметра типа string. Гораздо легче писать, когда не забиваешь себе голову и знаешь, что передаёшь указатель на память, где лежит текст, а не указатель на первый символ неизвестно чего (StrPCopy(Buffer[0],...)


 
Fantasist   (2003-07-17 06:50) [7]


> вопрос в сэйф коде при работе со строками


Просто warinig этот надо отключать. Данно пердупреждение включили в D7 предвосхищая переход на .NET - оттуда эти понятия. Unsafe code - это использование поинтеров и манипулирование динамически выделяемой памятью, а safe code - это тот где использутся только управляемые типы .NET. Хочешь писать safe code, оставляй TStream, и переходи на .NET-овскую сериализацию.


 
Beginner3000   (2003-07-18 00:46) [8]

to Morfein © (17.07.03 02:06)
я всё это знаю
ругаться не надо

to Fantasist (17.07.03 06:50)
загодя универсальный код писать не получится?
спасибо обнадёжили
буду как и раньше стринг туда кидать
хотя 2й из заданных мной вопрос интересует до сих пор

Beginner3000 (17.07.03 01:20) как обещал
Execute, Socket, Write, Terminated, Active example
TheStream.Write(buffer, Length(buffer) + 1);
где буффер:string

1й вопрос остался без ответа


 
Palladin ©   (2003-07-18 06:59) [9]

на первый вопрос я тебе ответил самой первой строчкой в самом втором посте, правда в контексте D6, но не думаю что все так плохо в D7


 
Beginner3000   (2003-07-22 03:01) [10]

2 Palladin ©
сорри
но думаю, что все 3 вопроса именно в контексте д7



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

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

Наверх




Память: 0.49 MB
Время: 0.012 c
1-10175
sdram
2003-07-18 16:40
2003.08.04
Подскажите как в TQuickRep в панель инструментов добавить кнопку


14-10419
K.o.Z
2003-07-16 20:34
2003.08.04
Кластеры


1-10181
Son!K
2003-07-23 04:21
2003.08.04
Random


7-10476
Vasiliy
2003-05-24 16:56
2003.08.04
Господа, подскажите как отследить вращение ролика мышки?


1-10193
Marconi
2003-07-22 23:53
2003.08.04
Графические объекты