Delphi / Pascal : Uac (user account control) - exécuter une application en tant

Messages postés
20
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
8 octobre 2019
- - Dernière réponse :  Yanb - 10 oct. 2019 à 09:12
Bonjour,
Je n'ai encore jamais eu l'occasion de me mettre au xml et maintenant, avec l'âge...
Je souhaiterais utiliser le fichier .res dont il est question mais sans le paragraphe référençant XPMan.
Je suis sous Win 10 et quand je mets tout le fichier je perds tout un tas d'effets visuels que je me suis decarcassé à produire. J'ai essayé des tas de trucs sur ce code mais alors la compilation échoue lamentablement, je ne sais pas supprimer le noeud <dependency>. (Je me fais tout petit)
Merci et bon courage, Patrice.
Afficher la suite 

1 réponse

0
Merci
Salut,
Exemple si fichier .xml à adapter...
procedure TForm1.Button1Click(Sender: TObject);
const
  AXmlFileName1 = 'Project1.xml';
  AXmlFileName2 = 'Project1Modif.xml';
var
  I: Integer;
  MyNode: IXMLNode;
begin
  XMLDocument1.LoadFromFile(AXmlFileName1);
  MyNode := XMLDocument1.ChildNodes.Nodes[1];
  for I := MyNode.ChildNodes.Count -1 downto 0 do
    if MyNode.ChildNodes[I].NodeName = 'dependency' then
        MyNode.ChildNodes.Delete(I);
  XMLDocument1.SaveToFile(AXmlFileName2);
end;

Exemple si fichier .xml dans .res à adapter...
procedure TForm1.Button2Click(Sender: TObject);
  function ReadStrFromStream(Stream: TStream): AnsiString;
  var
    C: AnsiChar;
  begin
    Result := '';
    repeat
      Stream.Read(C, 1);
      Result := Result + C;
    until Stream.Position >= Stream.Size;
  end;
const
  CFilename1 = 'Project1.res';
  CFilename2 = 'Project1Modif.res';
var
  OldFileStream: TFileStream;
  NewFileStream: TFileStream;
  S: AnsiString;
begin
  OldFileStream := TFileStream.Create(CFilename1, fmOpenRead);
  try
    NewFileStream := TFileStream.Create(CFilename2, fmCreate);
    try
      S := '';
      S := ReadStrFromStream(OldFileStream);
      OldFileStream.Position := 0;
      if Pos('<dependency>', S) <> 0 then
      begin
        NewFileStream.CopyFrom(OldFileStream, Pos('<dependency>', S) -1);
        OldFileStream.Position := Pos('</dependency>', S) + Length('</dependency>') +1;
        NewFileStream.CopyFrom(OldFileStream, OldFileStream.Size - OldFileStream.Position);
      end
      else
        NewFileStream.CopyFrom(OldFileStream, OldFileStream.Size);
    finally
      NewFileStream.Free;
    end;
  finally
    OldFileStream.Free;
  end;
end;

@+
Commenter la réponse de Yanb