Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.04;
Скачать: CL | DM;

Вниз

Отвести память под текст   Найти похожие ветки 

 
Micah'GF   (2003-08-23 20:57) [0]

Делаю так:
pPTR := AllocMem(Length(Edit1.Text));
dwSize := Length(Edit1.Text);
Move(Edit1.Text, pPTR, Length(Edit1.Text));

а как будет правильней чтоб потом можно было сделать так:
ListBox1.Items.Add( pPTR )

ЗЫ. ну не умею я еще работать с пямятью :[


 
Anatoly Podgoretsky ©   (2003-08-23 21:26) [1]

ListBox1.Items.Add(Edit1.Text)


 
Micah'GF   (2003-08-23 22:14) [2]

тогда вопрос немного подругому...
нужно загрузить текст из файла в Edit1.Text, а зтем еще в Memo1.Text ... только функцией FileRead() ( TextFile не предлагать)


 
Palladin ©   (2003-08-23 22:36) [3]

а почему не предлагать?
ну если хочешь

function ReadString(var f:file):string;
var
Readet,CBZ:integer;
buffer:array of byte;

function EndOfString:boolean;
var
i:integer;
begin
CBZ:=Readet;
result:=true;
if Readet=0 then exit;
for i:=0 to Readet do if buffer[i]=0 then
begin
CBZ:=i;
exit;
end;
result:=false;
end;

procedure AddToResult;
begin
SetLength(Result,Length(Result)+CBZ);
Move(Buffer[0],Result[Length(Result)-CBZ+1],CBZ);
end;

begin
SetLength(Result,0);
SetLength(Buffer,1024);
while true do
begin
BlockRead(f,Buffer[0],Length(Buffer),Readet);
if not EndOfString then AddToResult else
begin
AddToResult;
break;
end;
end;
end;


 
Anatoly Podgoretsky ©   (2003-08-23 22:53) [4]

Ну так загрузи в переменную типа string и затем присвой ее


 
Palladin ©   (2003-08-23 23:29) [5]

Ошибочка вышла
вместо
for i:=0 to Readet do if buffer[i]=0 then
надоть
for i:=0 to Readet-1 do if buffer[i]=0 then


 
IntLex   (2003-08-24 09:48) [6]

>>Micah"GF
А вообще-то, надо не:
>>pPTR := AllocMem(Length(Edit1.Text));
а так:
pPTR := AllocMem(Length(Edit1.Text)+1);
1 байт для $0


 
Micah'GF   (2003-08-24 17:20) [7]

все неподходит...
во-первых файл бинарный - в нем текст, а во-вторых читаю не я, а dll , но я точно знаю что читает она с помошью функци FileRead() ..
Процедуре передается только адрес буфера в виде pointer. В него будет загружен этот текст... Так вот мне надо правильно распределить пямять (именно распределить (лучше не использовать динамические массивы)) и потом правильно использовать полученое содержимое (хотябы объясните как в переменную string поместить это содержимое...


 
Song ©   (2003-08-24 17:48) [8]

CreateFileMapping(), MapViewOfFile()
Можно ещё через TStream


 
sniknik ©   (2003-08-24 18:01) [9]

> все неподходит...
да ну? по моему все в "кассу" как ответ на первый вопрос. для второго -> Micah"GF (24.08.03 17:20) [7] можно сделать так

var s: string;
begin
s := StringOfChar(#0, 10{размер});
Процедуре_передается_только_адрес_буфера_в_виде_pointer(@s[1]);
....



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

Текущий архив: 2003.09.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
1-10711
x_michael
2003-08-20 13:41
2003.09.04
Объединение ячеек в StringGrid (DrawGrid)


1-10788
Makhanev A.S.
2003-08-22 08:16
2003.09.04
Как убрать scrollbar ы?


1-10743
uhhax
2003-08-20 02:04
2003.09.04
TCheckListBox и TMemo


14-10905
Zhenka
2003-08-12 09:11
2003.09.04
Помогите разобраться с файлами


3-10541
Zorik
2003-08-15 15:29
2003.09.04
опять транзакции