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

Вниз

Еще 1 Легкий вопрос теперь про приведение типов.   Найти похожие ветки 

 
bloodman ©   (2004-09-03 18:16) [0]

Почему компилятор ругается , когда пишешь такую строку :
  PChar(a)
если
a: String[200];  a если а : String; то все нормально проходит???
Как это можно обойти. Работаю с записями  поэтому нужно указывать кол-во символов ...


 
Palladin ©   (2004-09-03 18:20) [1]

Есть разница между ShortString и LongString. String - указатель,  String[2000] массив Char из 2000 элементов... как же ты собрался привести 4 байта к 2000?


 
Palladin ©   (2004-09-03 18:22) [2]

Нолик лишний...


> массив Char из 2000 элементов

точнее из 201 элемента...


 
bloodman ©   (2004-09-03 18:22) [3]

понятно , а как можно привести к PСhar ? @a ??


 
Суслик ©   (2004-09-03 18:23) [4]


> bloodman ©   (03.09.04 18:16)  

меньше вопросов

в штаном хелпе по ф1 в разделе
object pascal reference\data types...\string types
очень хорошо рассказано про строки.
просто зафигански!
и про string, и про pchar и про все на свете...


 
Суслик ©   (2004-09-03 18:24) [5]


> bloodman ©   (03.09.04 18:22) [3]

pchar предполагает #0 на конце.
у a его нет


 
Palladin ©   (2004-09-03 18:25) [6]


>  как можно привести к PСhar ? @a ??

a:String[201];

a[201]:=#0;

и приводи наздоровье PChar(@a[1]);


 
Суслик ©   (2004-09-03 18:28) [7]


> Palladin ©   (03.09.04 18:25) [6]

только мусора много будет
скорее a[length(a)+1] := #0;


 
bloodman ©   (2004-09-03 18:30) [8]

Суслик ©   (03.09.04 18:28) [7]

>только мусора много будет
какого это мусора?


 
Суслик ©   (2004-09-03 18:31) [9]

какого, какого - случайного.

у тебя всегда строка длинной 200? Нет же: занято первые N символов. Если сделаешь как [6], то получишь - превые N симовлов ок, а дальше мусовр.


 
Palladin ©   (2004-09-03 18:33) [10]


> Суслик ©   (03.09.04 18:28)

Да верно.
Можно и a[a[0]+1]:=#0;


> [8] bloodman ©   (03.09.04 18:30)

Неиспользуемые элементы массива будут заполнены мусором... по моей ошибке PChar() будет выдавать чушь после рабочих символов размером в 200сти букв...


 
bloodman ©   (2004-09-03 18:35) [11]

аа понятно я тоже об этом подумал , только я думал что ты другое имеешь в виду. А вот такую функцию рационально использовать ?
function String2PChar( s:String):PChar;
begin
result:=PChar(s);
end;
?


 
Суслик ©   (2004-09-03 18:41) [12]

не стОит

и не спрашивай почему


 
bloodman ©   (2004-09-03 18:50) [13]

а все таки  ? =)


 
Fay ©   (2004-09-03 18:54) [14]

функция вернёт указатель куда-то.


 
Palladin ©   (2004-09-03 19:01) [15]

function ShortString2PChar(var s):PChar;
type
AOB=array [0..3] of byte;
Begin
AOB(S)[AOB(S)[0]+1]:=0;
Result:=PChar(@AOB(S)[1]);
End;

procedure TForm1.Button1Click(Sender: TObject);
var
s:string[5];
begin
s:="abv";
MessageBox(Application.Handle,ShortString2PChar(s),"fdff",MB_OK);
end;


 
bloodman ©   (2004-09-03 19:27) [16]

Моя функция тоже работает...


 
Palladin ©   (2004-09-03 19:32) [17]


> bloodman ©   (03.09.04 19:27)

естественно, ведь сначала компилятор проводит преобразование ShortString в LongString...


 
bloodman ©   (2004-09-03 19:32) [18]

Ну а в чем с ней проблема тогда?


 
Palladin ©   (2004-09-03 20:25) [19]

Просто чуть медленней



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

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

Наверх





Память: 0.49 MB
Время: 0.028 c
6-1089720525
ctranik
2004-07-13 16:08
2004.09.19
Как заставить IdHTTP запускатся автоматически


14-1093937586
Chainik
2004-08-31 11:33
2004.09.19
Скачивание обновлений Win2K


1-1094054001
dms_main
2004-09-01 19:53
2004.09.19
задержка выполнения


14-1093695706
DeadMeat
2004-08-28 16:21
2004.09.19
Вот так вот...


1-1094298121
dr Tr0jan
2004-09-04 15:42
2004.09.19
Хранение и передача массива из 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
Английский Французский Немецкий Итальянский Португальский Русский Испанский