Форум: "Основная";
Текущий архив: 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.037 c