Hei,
Olen tekemässä pluginia(dll) yhteen ohjelmaan mikä nopeuttaa työn tekoa.
// Tieto syötetään tekstinä mikä on esim. "25.0 50.0 25.0" [Tekla.Structures.Plugins.StructuresField("ymp_jako")] public string ympjako;
Tuossa ei ole mitään ongelmaa, mutta...
data.ympjako; // sisältää "25.0 50.0 25.0" foreach (double Value in aSpacings) RebarGroup.Spacings.Add(Value);
...ongelmana on se, miten saan nuo 25,50,25 erotettu toisistaan ja muutettua ne myös double:ksi. Olen yrittänyt kaikkea mutta ei tulosta.
EDIT: Koodia
Haluat siis saada merkkijonosta jäsennettyä useita lukuja?
Merkkijonot voi ensin pätkiä osiin String.Split-metodilla, jonka parametrina on taulukko mahdollisia erottimia. Sitten merkkijonot voi jäsentää double.Parse-metodilla. Tässä on esimerkki, joka näyttää toimivan. En ole C#-guru. Käytä omalla riskillä.
using System; using System.Globalization; class Example { public static void Main(string[] args) { String exampleData1 = "1.2;2.3;3.4;4.5"; String exampleData2 = "9.8 8.7 7.6 6.5"; char[] splitter = {';', ' '}; /* tämä kohta varmistaa, että lukujen jäsennyksessä piste (eikä pilkku) on desimaalierotin. */ CultureInfo enUS = new CultureInfo("en-US"); String[] splits = exampleData1.Split(splitter); Console.WriteLine("Puolipisteet"); foreach (String str in splits) { /* muista napata FormatException oikeassa ohjelmassa */ double value = double.Parse(str, enUS); Console.WriteLine("=> {0}", value); } splits = exampleData2.Split(splitter); Console.WriteLine("\nVälilyönnit"); foreach (String str in splits) { double value = double.Parse(str, enUS); Console.WriteLine("=> {0}", value); } } }
Jos en käytä enUS-CultureInfo-objektia, omassa koneessani double.Parse ei ymmärrä pistettä erottimena, vaan vaatii pilkun ,kuten suomalainen käytäntö on. Ts. muista tehdä ohjelmaasi kuuluva lokalisointi.
Kiitos koodista, täytyy testailla huomenna töissä jos ehdin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.