mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 11:24:16 +01:00 
			
		
		
		
	TXMLDatapacketReader.StoreRecord uses TFieldDef.Name to match TXMLDatapacketReader.RestoreRecord. Fixes case mismatch in PG tests. Patch by Lacak2, mantis #22367
git-svn-id: trunk@22710 -
This commit is contained in:
		
							parent
							
								
									a95641e43c
								
							
						
					
					
						commit
						65c657006c
					
				@ -348,37 +348,39 @@ begin
 | 
				
			|||||||
    if assigned(AFieldNode) then
 | 
					    if assigned(AFieldNode) then
 | 
				
			||||||
      begin
 | 
					      begin
 | 
				
			||||||
       s := AFieldNode.NodeValue;
 | 
					       s := AFieldNode.NodeValue;
 | 
				
			||||||
 | 
					       AField := Fields.FieldByNumber(FieldDefs[FieldNr].FieldNo);
 | 
				
			||||||
       if (FieldDefs[FieldNr].DataType in [ftBlob, ftBytes, ftVarBytes]) and (s <> '') then
 | 
					       if (FieldDefs[FieldNr].DataType in [ftBlob, ftBytes, ftVarBytes]) and (s <> '') then
 | 
				
			||||||
         s := DecodeStringBase64(s);
 | 
					         s := DecodeStringBase64(s);
 | 
				
			||||||
       if FieldDefs[FieldNr].DataType in [ftBlob, ftMemo] then
 | 
					       if FieldDefs[FieldNr].DataType in [ftBlob, ftMemo] then
 | 
				
			||||||
        begin
 | 
					        begin
 | 
				
			||||||
        ABufBlobField.BlobBuffer:=ADataset.GetNewBlobBuffer;
 | 
					        ABufBlobField.BlobBuffer:=ADataset.GetNewBlobBuffer;
 | 
				
			||||||
        afield := Fields.FieldByNumber(FieldDefs[FieldNr].FieldNo);
 | 
					 | 
				
			||||||
        AField.SetData(@ABufBlobField);
 | 
					        AField.SetData(@ABufBlobField);
 | 
				
			||||||
        ABufBlobField.BlobBuffer^.Size:=length(s);
 | 
					        ABufBlobField.BlobBuffer^.Size:=length(s);
 | 
				
			||||||
        ReAllocMem(ABufBlobField.BlobBuffer^.Buffer,ABufBlobField.BlobBuffer^.Size);
 | 
					        ReAllocMem(ABufBlobField.BlobBuffer^.Buffer,ABufBlobField.BlobBuffer^.Size);
 | 
				
			||||||
        move(s[1],ABufBlobField.BlobBuffer^.Buffer^,ABufBlobField.BlobBuffer^.Size);
 | 
					        move(s[1],ABufBlobField.BlobBuffer^.Buffer^,ABufBlobField.BlobBuffer^.Size);
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
        Fields.FieldByNumber(FieldDefs[FieldNr].FieldNo).AsString := s;  // set it to the filterbuffer
 | 
					        AField.AsString := s;  // set it to the filterbuffer
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end;
 | 
					    end;
 | 
				
			||||||
end;
 | 
					end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
procedure TXMLDatapacketReader.StoreRecord(ADataset : TCustomBufDataset; ARowState : TRowState; AUpdOrder : integer = 0);
 | 
					procedure TXMLDatapacketReader.StoreRecord(ADataset : TCustomBufDataset; ARowState : TRowState; AUpdOrder : integer = 0);
 | 
				
			||||||
var FieldNr : Integer;
 | 
					var FieldNr : Integer;
 | 
				
			||||||
    AField: TField;
 | 
					    AFieldDef: TFieldDef;
 | 
				
			||||||
 | 
					    s: string;
 | 
				
			||||||
    ARecordNode : TDOMElement;
 | 
					    ARecordNode : TDOMElement;
 | 
				
			||||||
begin
 | 
					begin
 | 
				
			||||||
  inc(FEntryNr);
 | 
					  inc(FEntryNr);
 | 
				
			||||||
  ARecordNode := XMLDocument.CreateElement('ROW');
 | 
					  ARecordNode := XMLDocument.CreateElement('ROW');
 | 
				
			||||||
  for FieldNr := 0 to ADataset.FieldDefs.Count-1 do
 | 
					  for FieldNr := 0 to ADataset.FieldDefs.Count-1 do
 | 
				
			||||||
    begin
 | 
					    begin
 | 
				
			||||||
    AField := ADataset.Fields.FieldByNumber(ADataset.FieldDefs[FieldNr].FieldNo);
 | 
					    AFieldDef := ADataset.FieldDefs[FieldNr];
 | 
				
			||||||
    if AField.DataType in [ftBlob, ftBytes, ftVarBytes] then
 | 
					    s := ADataset.Fields.FieldByNumber(AFieldDef.FieldNo).AsString;
 | 
				
			||||||
      ARecordNode.SetAttribute(AField.FieldName,EncodeStringBase64(AField.AsString))
 | 
					    if AFieldDef.DataType in [ftBlob, ftBytes, ftVarBytes] then
 | 
				
			||||||
 | 
					      ARecordNode.SetAttribute(AFieldDef.Name, EncodeStringBase64(s))
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      ARecordNode.SetAttribute(AField.FieldName,AField.AsString);
 | 
					      ARecordNode.SetAttribute(AFieldDef.Name, s);
 | 
				
			||||||
    end;
 | 
					    end;
 | 
				
			||||||
  if ARowState<>[] then
 | 
					  if ARowState<>[] then
 | 
				
			||||||
    begin
 | 
					    begin
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user