Главная страница
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.02 c
14-10359
DenKop
2003-07-17 14:18
2003.08.04
Где взять простой ftp сервер для win.


1-10192
Альф
2003-07-17 16:11
2003.08.04
Можно ли из множества целых составить строку ?


3-10081
Alfred77777
2003-07-11 14:33
2003.08.04
Не получается вывести таблицу в режим редактирования


1-10194
Olga
2003-07-23 10:17
2003.08.04
Совместимость Delphi с Borland Pascal 7.0


3-10078
Fast
2003-07-11 12:30
2003.08.04
ADO Post