Törmäsin seuraavanlaiseen ongelmaan...
Ohjelmani pitäisi pyöriä eri maiden asetuksilla olevissa koneissa (mm. pisteen ja pilkun ero numeroissa) ja englantilaisilla maa-asetuksilla VB rupeaa itkemään fontin koosta ja muuttaa sen sitten pienimpään mahdolliseen. Tämä tapahtuu useimmiten niiden tekstien kohdalla joissa fonttia on muotoiltu (bold tai italic), muttei ole mikään vakio (tekee saman ohjelman sammumisen yhteydessä näytettävälle formille, jolla on muotoilematonta ja oletusasetuksilla olevaa tekstiä). Käyttämäni fontti on tuo VB:n oletuksena asettama MS Sans Serif, joka ei näköjään ole mikään TrueType-fontti...
Eli siihen kysymykseen. Bugittaako VB:ni vai pitäisikö fontti vaihtaa TrueTypeä tukevaksi, vai missä mennään metsään?
jos haluat että ohjelmasi kelpaa missä tahansa, niin fonttia ei kannata kovin kauas arialista, serifistä tai times new romanista viedä, koska kaikkia fontteja ei oikein löydy muilta koneilta. kysymystä en täysin ymmärtänyt, mutta luultavasti vb bugittaa, onhan se microsoftin ohjelma :)
Itse en ole koskaan moiseen törmännyt, pystyisitkö antamaan esimerkkikoodin tai -formin, jossa tämä ongelma esiintyy?
Tällä hetkellä mulla ei oo paikkaa, johon voisin suoraan laittaa formin kopioitavaksi, mutta ohessa on tuon formin tiedot, jota näytetään poistuttaessa.
Eli testaukseen luo uusi projekti yhdellä formilla, jolle laitat yhden labelin nimeltä lblExit. Nimeä formi frmInfo. Tallenna projekti jonnekkin, avaa projektin frmInfo.frm notepadillä ja korvaa tiedot seuraavilla.
VERSION 5.00 Begin VB.Form frmInfo BorderStyle = 4 'Fixed ToolWindow Caption = "WatchMan" ClientHeight = 840 ClientLeft = 45 ClientTop = 285 ClientWidth = 4020 Icon = "frmInfo.frx":0000 LinkTopic = "Form1" MaxButton = 0 'False MinButton = 0 'False ScaleHeight = 840 ScaleWidth = 4020 ShowInTaskbar = 0 'False StartUpPosition = 2 'CenterScreen Begin VB.Label lblExit Alignment = 2 'Center Caption = "Meinaat sitten poistua?" BeginProperty Font Name = "MS Sans Serif" Size = 9.75 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 305 Left = 240 TabIndex = 0 Top = 240 Width = 3495 End End Attribute VB_Name = "frmInfo" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False
Kun Windowsin (käytössä XP Prof) kansallisuusasetukset muuttaa mille tahansa englantilaiset kansallisuusasetukset täyttäville asetuksille (piste desimaalierottimena) ja avaa projektin uudelleen, tulee seuraava virheilmoitus formia avattaessa:
"Errors during load. Refer to 'C:\Sorsa\TestForm\frmInfo.log' for details".
frmInfo.log ilmoittaa seuraavaa: "Line 22: Property Size in Font had an invalid value."
Labelin tekstinkoko on vaihtunut arvoon 8.
edit: Typoja ja tekstin muotoilua
Edellisen jälkeen opittua: Kokeilin muuttaa fontin koon suoraan arvoon 10 tuolla Notepadissä ja avata sen jälkeen formin. Fontin koko pysyi oikeana, eikä tullut mitään virheilmoituksia. Jos tämän jälkeen fontin tietoja katselee VB:n puolella ja tallentaa muutokset, niin fontin kooksi on on taas muuttunut tuo 9.75 ja virheilmoituksia vastassa.
Virheen syy: "Kotimaisilla asetuksilla" desimaalierottimena tallentuu pilkku eikä piste, mikä olisi järkeen käyvää näin koodaajana. Englantilaisilla asetuksillahan tuo aiheuttaa sen, että fontin kokona yritetään käyttää 9750. Vähällä pieleen...;)
Hyvä tietää ;D
Win XP Homella ei tuommoista ole havaittavissa. Desimaalierottimeksi tallentuu piste oli kyse Suomen tai Englannin maa-asetuksista. Samoin Notepadilla tehty muutos fonttikokoon tallentui sellaisena myös VB:ssä. Ei virheilmoituksia.
setä kirjoitti:
Win XP Homella ei tuommoista ole havaittavissa. Desimaalierottimeksi tallentuu piste oli kyse Suomen tai Englannin maa-asetuksista. Samoin Notepadilla tehty muutos fonttikokoon tallentui sellaisena myös VB:ssä. Ei virheilmoituksia.
Vaikuttaakohan tuohon VB:n versio ja siihen ajetut Service Packit? Töissä on vain SP3, kun himassa on SP4. Himassa en tota ole havainnut, mutten ole tosin testannutkaan...
Testasin VB5:llä, jossa on SP3. Kokeilen vielä VB6:lla.
Samaten Win XP Pro ja VB6, ei Service Packejä
Aloin ladata tuohon VB6:een SP5:sta. Mutta toisaalta kannattaako, jos nuo bugit SP:stä johtuu??.
Hei, mistä sä ton SP4:n oot ladannut ?
Töistä lainasin CD:n. Sain uuden koneen kk sitten, mutta nyt ei sitä SP4:n levyä löydy mistään. Ilmeisesti "tallessa" jossain jonkun pöydällä papereiden välissä. Ei kylläkään omalla pöydällä...=)
Ei vaikutusta vaikka päivitin SP6:een. Pakko olla koneessa tai WinXP:ssä vika.
Päivitin VB6:een SP5:n. Sama juttu. Ei tallennu pilkkua vaan piste. Ei virheilmoituksia fonttikoosta.
Mistäs tuo SP6 sitten löytyy. netissä oli vain SP5 ja VB5:een löytyi SP4 joltain oudolta sivulta (Scott & daves GRIPES )
Tuossa on linkki, josta valita joko koko Visual Studio 6:n päivitys tai sitten vain Visual Basic 6:lle ja Visual SourceSafe 6:lle oma pienempi paketti. Isommassa oli vain se ero, että siinä on Visual C++:n päivitys mukana.
http://msdn.microsoft.com/vstudio/downloads/
Minäkään en saanut ongelmaa toistettua, vaan desimaalierotin oli aina piste ja kaikki toimi hyvin. Jos teksti pienenee juuri englanninkielisillä asetuksilla, niin silloin kai tiedostossa täytyisi olla pilkku erottimena. Ilmeneekö ongelma muuten myös käännetyssä EXE-tiedostossa? Siinä lukuja tuskin on tallennettu tekstimuodossa.
Ongelmaa ei ilmene enään EXE-tiedoston kanssa. Kuten sanoit lukuja tuskin tallennetaan tekstimuodossa, joten desimaalit ilmoitetaan pisteellä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.