![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пересылка через сокеты [D6]
Олег_Иванов © (2007-08-24 08:55:00)Уважаемые мастера.
Вот работаю пересылкой данных через сокеты, хочу не использовать Stream, а работать через файлы. Как можно увеличить значение указателя на нужное значение и передать новое значение указателя.
Вот недоработанный код:
type
PInfo = ^TInfo;
TInfo = record
Size:Int64;
Title:array[0..255] of char;
Data:Pointer;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
f:file;
Size,Send:Integer;
pf:PInfo;
Buffer:array[0..4095] of Byte;
Count:Integer;
begin
pf:=nil;
Count:=0;
if not OpenDialog1.Execute then Exit;
Edit1.Text:=OpenDialog1.FileName;
AssignFile(f,OpenDialog1.FileName);
if FileExists(OpenDialog1.FileName) then
Reset(f,1)
else
Rewrite(f,1);
Size:=FileSize(f);
try
New(pf);
GetMem(pf.Data,Size);
StrPCopy(pf^.Title,OpenDialog1.FileName);
pf^.Size:=FileSize(f);
BlockRead(f,pf^.Data^,Size);
repeat
Inc(Count);
//Как сделать,чтобы значение указателя перешагнуло на Sizeof(Buffer) единиц
//и SendBuf отправил новое значение Buffer????
// Move(pf^.Data^,Buffer,Sizeof(Buffer));
Send:=ServerSocket1.Socket.Connections[0].SendBuf(Buffer,Sizeof(Buffer));
until
Count = 2;
finally
FreeMem(pf.Data,Size);
Dispose(pf);
CloseFile(f);
end;
end;
Сергей М. (2007-08-24 14:32:00) [1]
> Send:=ServerSocket1.Socket.Connections[0].SendBuf(Buffer,
> Sizeof(Buffer));
И вновь те же грабли - результат send'а никак не анализируется.
Сергей М. (2007-08-24 14:17:00) [2]
> Если пишешь на WinAPI, не хочу использваоть классы, чтобы
> размер EXE был большим
Так ведь TServerSocket тоже класс)..
Сам ведь себе противоречишь..
Олег_Иванов (2007-08-24 14:13:00) [3]Если пишешь на WinAPI, не хочу использваоть классы, чтобы размер EXE был большим.
Сергей М. (2007-08-24 13:42:00) [4]
> хочу не использовать Stream, а работать через файлы
Чем не устроил TFileStream или его наследник ?
tesseract (2007-08-24 10:44:00) [5]
> //Как сделать,чтобы значение указателя перешагнуло
> на Sizeof(Buffer) единиц //и SendBuf отправил новое
> значение Buffer????
Зачем ? И почему blockread не в цикле ?.
Leonid Troyanovsky (2007-08-24 10:28:00) [6]
> Олег_Иванов (24.08.07 08:55)
> Вот работаю пересылкой данных через сокеты, хочу не использовать
> Stream, а работать через файлы.
Все уже украдено до нас.
См. ftp.
--
Regards, LVT.
umbra (2007-08-24 09:09:00) [7]ничего не понял. О каком указателе идет речь?