Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-10362
zolotov
2003-07-15 21:13
2003.08.04
Как заменить старую версию F1Book более новой?


4-10510
blackgrin
2003-05-31 21:01
2003.08.04
Управление другим приложением, запущеным на этой-же машине


8-10310
Тролль
2003-04-09 06:56
2003.08.04
Пропорции видео


14-10423
ruslan_as
2003-07-17 16:48
2003.08.04
Помогите обработать ошибку


1-10177
Chlavik
2003-07-23 01:39
2003.08.04
Вызов метода класса программы из dll библтотеки. Можна ли так ?





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