Форум: "Основная";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
ВнизВопросы по строкам Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c