LoadFromStream não funciona

27/12/2005

15

Tenho o seguinte código:

var
ms: TMemoryStream;
begin

ms := TMemoryStream.Create;

DBGrid1.Columns.SaveToStream( ms );
teste.Position := 0;
Memo1.Lines.Clear;
[b:ee7b7a08d6]Memo1.Lines.LoadFromStream( ms );[/b:ee7b7a08d6]
ms.free;
end;

Quando fiz um DBGrid1.Columns.SaveToFile( ´c:\teste.ini´ ), ele me colocou tudo certo dentro do arquivo, mas na hora de efetuar o [b:ee7b7a08d6]Memo1.Lines.LoadFromFile( ´C:\teste.ini´ );[/b:ee7b7a08d6] ele me retorna apenas alguns caracteres, pelo que pude perceber, ele me retorna até o primeiro espaço.

Exemplo:

[b:ee7b7a08d6]Conteúdo do arquivo c:\teste.ini[/b:ee7b7a08d6]



Como faço para retornar todo o conteúdo para um memo, ou RichEdit, ou stringlist, qualquer variável texto ?


Responder

Posts

27/12/2005

Lehapan

acima


Responder

27/12/2005

Sourcecode

Cara, não sei se ajuda, mas, apesar de não ser bem o que você pede eu vou lhe dar uma sugestão: na hora de salvar as preferências fazer um loop pelas colunas e ir salvando uma por uma no ini, fazendo desta forma nunca tive problemas, somente vai gastar algumas linhas a mais pra fazer, mas melhor bem feito com muito código do mal feito com pouco código.

[]´s


Responder

28/12/2005

Lehapan

Espero ter ajudado


uses IniFiles, Classes;

var
  StrStm: TStringStream;
  S: string;
  Caracter: integer;
  MemIni: TMemIniFile;
begin

  StrStm := TStringStream.Create( S );

  DbGrid.Columns.SaveToStream( StrStm );
  StrStm.Seek( 0, soFromBeginning );
  { Ele te retorna como uma string os dados das colunas de um DBGrid }
  S := StrStm.ReadString( StrStm.Size );

  Caracter := 123;
  while Pos( chr( Caracter ), S ) > 0 do
  begin
    inc( Caracter );
  end;

  { Substitui todos o chr(0) da string S pelo chr(Caracter) }
  S := Substitui( S, chr( 0 ), chr( Caracter ) );

  MemIni := TMemIniFile.Create(´´);
  MemIni.WriteString( ´DbGrid´, ´Colunas´, S );
  MemIni.WriteString( ´DbGrid´, ´Caracter´, chr( Caracter ) );

end;




Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira