2009-02-07 5 views

Répondre

0

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.)

+0

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. –

+0

Ummm, Rob? Je n'ai pas dit que c'était un fichier .properties valide, n'est-ce pas? –

+1

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. –

4

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.

+1

Gel utilisé JNI pour la gestion des fichiers de propriétés (c'est-à-dire qu'il n'y avait pas de source Delphi) –