J'ai pensé à créer le mien, mais il y a beaucoup de détails à considérer pour le rendre 100% compatible avec les fichiers Java .properties, donc je demande d'abord.Y at-il une bibliothèque Delphi qui lit et écrit les fichiers .properties?
Répondre
Pas un gars Java, mais d'après ce que je peux voir les fichiers .properties sont similaires aux fichiers .INI déguisés; il a des paires nom = valeur, sans les noms de section. Vous pouvez utiliser TStringList de Delphi pour travailler avec cela; il a les propriétés Names and Values.
Par exemple, pour lire la ligne suivante à partir d'un fichier .properties:
MyProgramData=c:\documents and settings\DR\Application Data\MyApp
Je peux simplement utiliser:
var
SL: TStringList;
MyDataPath: string;
begin
SL := TStringList.Create;
try
SL.LoadFromFile('myapp.properties');
MyDataPath := SL.Values['MyProgramData'];
finally
SL.Free;
end;
// Do something with MyDataPath
end;
Pour le lecteur trop pédant, je ne dis pas que TStringList vous permettra d'utiliser toutes les fonctionnalités des fichiers .properties; il peut, cependant, soyez assez pour ce que vous devez faire. (Comme je l'ai dit, je ne suis pas un type Java.)
Il y avait un EDI Java appelé Gel. Il a été écrit en Delphi, et c'était un bon IDE, donc je pense qu'il était capable de travailler avec des fichiers de propriétés. L'auteur a cessé de travailler sur le projet. Dans son blog post describing the project's cancellation, il mentionne être ouvert à la perspective de rendre le projet open source, mais il n'a jamais vraiment décollé. Si vous demandez gentiment, vous pourriez obtenir les parties de ce code que vous recherchez.
Soyez sceptique de toute solution que vous trouvez qui utilise TStrings
pour son interface. Bien que cette classe ait des propriétés Names
et Values
qui la rendent attrayante en tant que classe pour travailler avec des paires clé/valeur, elle ne sera pas complètement compatible avec les fichiers de propriétés de Java. La raison est que Java autorise "=" comme un caractère dans le nom de la clé, et la classe TStrings
détecte la fin d'un nom et le début d'une valeur en recherchant le premier caractère "=" dans une chaîne. De plus, les fichiers de propriétés Java peuvent utiliser ":" comme séparateur et même utiliser des espaces ordinaires.
Gel utilisé JNI pour la gestion des fichiers de propriétés (c'est-à-dire qu'il n'y avait pas de source Delphi) –
Ce fichier n'est pas valide .properties. Les antislashs sont spéciales. Lisez la documentation de la fonction java.util.Properties.load(). Les signes égaux peuvent faire partie du nom de la clé, mais INI ne le supporte pas. Les lignes peuvent être continuées avec des antislashs. –
Ummm, Rob? Je n'ai pas dit que c'était un fichier .properties valide, n'est-ce pas? –
Non, je suppose que vous n'avez jamais dit que votre exemple était valide. Mais pourquoi donner des exemples invalides? En Java, la valeur de MyProgramData serait "c: documents and settingsDRApplication DataMyApp". DR est intéressé à avoir 100% de compatibilité, donc quelque chose qui n'a pas de support antislash ne me semble pas utile. –