我有一个注册申请,它使用
将客户信息保存在一个文件中,该文件是每个客户的文件Write(myFile, customer);
CloseFile(myFile);
FileMode := fmOpenReadWrite;
但是我需要附上客户的图片[jpg]并将其放入文件中,有没有人知道我该怎么做?
这是一个完整的List os记录
type
TCustomer = Record
NomeCompleto : string[100];
Nome : string[20];
Sobrenome : string[20];
Idade : string[20];
Sexo : string[20];
Escolaridade:string[60];
CPF: string[11];
RG:string[20];
EstadoCivil:string[20];
Filhos: boolean;
QTFilhos: string[10];
Foto:string[255];
Endereco:string[40];
Numero: string[20];
Bairro: string[20];
Cidade:string[20];
Estado:string[2];
Telefone:string[10];
Celular:string[10];
Email:string[40];
Adicionais: string[200];
Objetivo: string[200];
Experiencia1: string[45];
Entrada1: string[4];
Saida1: string[4];
Cargo1: string[35];
resumo1: string[200];
Experiencia2: string[45];
Entrada2: string[4];
Saida2: string[4];
Cargo2: string[35];
resumo2: string[200];
Experiencia3: string[45];
Entrada3: string[4];
Saida3: string[4];
Cargo3: string[35];
resumo3: string[200];
Experiencia4: string[45];
Entrada4: string[4];
Saida4: string[4];
Cargo4: string[35];
resumo4: string[200];
Instituicao1:string[45];
Nomecurso1:string[45];
datainicial1:string[45];
datafinal1:string[45];
Instituicao2:string[45];
Nomecurso2:string[45];
datainicial2:string[45];
datafinal2:string[45];
Instituicao3:string[45];
Nomecurso3:string[45];
datainicial3:string[45];
datafinal3:string[45];
Instituicao4:string[45];
Nomecurso4:string[45];
datainicial4:string[45];
datafinal4:string[45];
Instituicao5:string[45];
Nomecurso5:string[45];
datainicial5:string[45];
datafinal5:string[45];
Instituicao6:string[45];
Nomecurso6:string[45];
datainicial6:string[45];
datafinal6:string[45];
instituicao:string[45];
area:string[45];
ano:string[10];
carga1:string[10];
carga2:string[10];
carga3:string[10];
carga4:string[10];
carga5:string[10];
carga6:string[10];
personalidade:string[255];
答案 0 :(得分:1)
停止使用旧式Pascal文件I / O并包含文件流。将文件写为二进制文件,而不是文本文件。然后,您至少可以执行以下操作。
创建文件:
var
customer: TCustomer;
jpg: TJPEGImage;
myFile: TFileStream;
begin
jpg := TJPEGImage.Create;
try
// fill customer and jpg as needed...
myFile := TFileStream.Create(Filename, fmCreate);
try
myFile.WriteBuffer(customer, sizeof(customer));
jpg.SaveToStream(myFile);
finally
myFile.Free;
end;
finally
jpg.Free;
end;
end;
加载文件:
var
customer: TCustomer;
jpg: TJPEGImage;
myFile: TFileStream;
begin
jpg := TJPEGImage.Create;
try
myFile := TFileStream.Create(Filename, fmOpenRead);
try
myFile.ReadBuffer(customer, sizeof(customer));
jpg.LoadFromStream(myFile);
finally
myFile.Free;
end;
// use customer and jpg as needed...
finally
jpg.Free;
end;
end;
答案 1 :(得分:0)
鉴于您的customer
记录包含固定大小的项目,我建议您定义以下内容:
photo : byte[20000];
然后,您可以将JPG文件作为file of byte
打开,读取所有内容,并将其存储在记录中的photo
数组中。
当然,这有一个缺点,你必须预先决定最大图像尺寸,但对于一张小脸照片,20-50kB应该绰绰有余。
也可以将文件重新打开为byte
类型的文件,并简单地将二进制图像数据附加到末尾(即,以byte
数组或序列的形式读取图像数据如果您的customer
记录(现在是)具有固定大小,则为字节数,并将其复制/附加到客户数据文件中。通过这种方式,您可以了解“平衡”。您的数据文件是纯图像数据。