Читать «Советы по Delphi. Версия 1.0.6» онлайн - страница 7
Валентин Озеров
Data.ReadCount:= FileRead(Data.FileHandle, Data.Buffer^, BufferSize);
End;
CopyData;
End Until (Data.ReadCount = 0) Or (F.BufEnd >= Sizeof (F.Buffer) - 2);
Result:= 0;
End;
Procedure Write(var Data: TStreamFileRecord);
Var
Status: Integer;
Destination: Integer;
II: Integer;
Begin
With TStreamFileRecord(F.UserData) Do Begin
Destination:= 0;
For II:= 0 To F.BufPos - 1 Do Begin
If F.Buffer[II] <> #13 Then Begin
Inc(Destination);
Buffer^[Destination]:= F.Buffer[II];
End;
End;
Status:= FileWrite(FileHandle, Buffer^, Destination);
F.BufPos:= 0;
Result:= 0;
End;
End;
Begin
Case F.Mode Of
fmInput:
Read(TStreamFileRecord(F.UserData));
fmOutput:
Write(TStreamFileRecord(F.UserData));
End;
End;
Function StreamFileFlush(var F: TTextRec): Integer;
Begin
Result:= 0;
End;
Function StreamFileClose(var F : TTextRec): Integer;
Begin
With TStreamFileRecord(F.UserData) Do Begin
FreeMem(Buffer);
FileClose(FileHandle);
End;
Result:= 0;
End;
Procedure AssignStreamFile(var F: Text; Filename: String);
Begin
With TTextRec(F) Do Begin
Mode:= fmClosed;
BufPtr:= @Buffer;
BufSize:= Sizeof(Buffer);
OpenFunc:= @StreamFileOpen;
InOutFunc:= @StreamFileInOut;
FlushFunc:= @StreamFileFlush;
CloseFunc:= @StreamFileClose;
StrPLCopy(Name, FileName, Sizeof(Name) - 1);
End;
End;
end.
Преобразование BMP в JPEG в Delphi 3
Используя Delphi 3, как мне сохранить BMP-изображение в JPEG-файле?
Допустим, Image1 – компонент TImage, содержащий растровое изображение. Используйте следующий фрагмент кода для конвертации вашего изображения в JPEG-файл:
var
MyJpeg: TJpegImage;
Image1: TImage;
begin
Image1:= TImage.Create;
MyJpeg:= TJpegImage.Create;
Image1.LoadFromFile('TestImage.BMP'); // Чтение изображения из файла
MyJpeg.Assign(Image1.Picture.Bitmap); // Назначание изображения объекту MyJpeg
MyJpeg.SaveToFile('MyJPEGImage.JPG'); // Сохранение на диске изображения в формате JPEG
end;
Декомпиляция звукового файла формата Wave и получение звуковых данных
Интересно, есть ли технология преобразования Wave-формата в обычный набор звуковых данных? К примеру, мне необходимо удалить заголовок и механизм (метод) сжатия, которые могут компилироваться и сохраняться вместе с Wave-файлами.
У меня есть программа под D1/D2, которая читает WAV-файлы и вытаскивает исходные данные, но она не может их восстанавить, используя зашитый алгоритм сжатия.
unit LinearSystem;
interface
{============== Тип, описывающий формат WAV ==================}
type wavheader = record
nChannels : Word;
nBitsPerSample : LongInt;
nSamplesPerSec : LongInt;
nAvgBytesPerSec : LongInt;
RIFFSize : LongInt;
fmtSize : LongInt;
formatTag : Word;
nBlockAlign : LongInt;
DataSize : LongInt;
end;
{============== Поток данных сэмпла ========================}
const MaxN = 300; { максимальное значение величины сэмпла }
type SampleIndex = 0..MaxN+3;
type DataStream = array[SampleIndex] of Real;
var N: SampleIndex;
{============== Переменные сопровождения ======================}