Delphi ja bat

tiedosto

Pitäisi saada bat tiedosto suoritettua. Tämä toimiikin muuten hyvin, paitsi jos polussa on skandeja. Esim. tämä ei toimi, koska ä ja ö tulostuvat dos:ssa väärin.

var batchfile: Tstringlist;
begin
batchfile := TStringList.Create;
batchfile.add('"C:\Documents and Settings\JK\Työpöytä\Tiedosto.exe"');
batchfile.SaveToFile(tempdir 'Tiedosto.bat');
batchfile.Free;
chdir('c:\');
WinExec(PChar(tempdir 'Tiedosto.bat'),sw_hide);
end;

Kellään ideaa miten tämän saisi toimimaan aina?

6

630

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Delphikoodari..
      • Ideasta

        Siihen löytyikin ihan extractshortpathname()


      • että.-
        Ideasta kirjoitti:

        Siihen löytyikin ihan extractshortpathname()

        Ei auta asiaa.


    • koodari_

      HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders ja sieltä desktop.

      Kun ohjelmallisesti sen tuolta luet niin menee nuo skanditkin ihan nappiin...

    • delphiguru

      windows käyttää Windows-1252 -merkkikoodausta (uudemmat sisäisesti Unicode / UTF-16LE, mutta se ei ole tässä olennaista).

      MS-DOS ja windowsin komentorivi käyttää OEM850 -koodausta.

      jotta ä ja ö toimisivat oikein: CharToOemBuff function

      https://msdn.microsoft.com/en-us/library/windows/desktop/dd319646(v=vs.85).aspx

      Jos käytät CharToOemBuff -funktiota oikein, niin toki toimii ä tai ö -sisältävät tiedoston tai hakemiston nimet ihan oikein.

      Jäynä on siinä, että jos ET KÄYTÄ tuota CharToOemBuff -funktiota, niin bat -tiedosto ei saa parametriksi ä tai ö -kirjainta lainkaan, vaan jonkun ihan väärän merkin.

      Syynä on se, että .bat -tiedostossa merkkivalikoima/-koodaus on sama kuin MS-DOSissa eli oem850 eikä Windows-1252.

      HUOM:

      Itseasiassa CharToOemBuff -funktiota ei ole olemassa !

      Sensijaan on olemassa CharToOemBuffA ja CharToOemBuffW -funktiot.

      Eli jos lähde on AnsiString niin käytä CharToOemBuffA.

      Jos lähde on WideString tai UnicodeString, niin käytä CharToOemBuffW.

      HUOM: Jos lähde on pelkkä String, niin huomaa:

      Vanhemmat versiot KUIN Delphi 2009:

      type
      String = AnsiString;

      Delphi 2009 sekä sitä uudemmat versiot:

      type
      String = UnicodeString;

      em. tyyppimäärityksiä et siis kirjoita sinä, vaan ne ovat Delphissä jo valmiiksi voimassa !

      Delphin CharToOemBuff -funktio on siis itseasiassa alias:


      Vanhemmat versiot KUIN Delphi 2009:

      CharToOemBuff = CharToOemBuffA

      Delphi 2009 sekä sitä uudemmat versiot:

      CharToOemBuff = CharToOemBuffW

    • Anonyymi

      Katso esim. funktio:

      CharToOemA function

      eli komentorivi käyttää merkistöä 850 mutta GUI -sovellukset merkistöä Windows-1252. (tai unicode).

      ON suora muunnosfunktio unicode -> 850 / OEM850:

      CharToOemBuffA
      ja
      CharToOemBuffW

      eli noilla saa muunnettua komentoriviohjelman vaatimaan OEM850 -muotoon.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Jens Ihlen (ex Kukka) poika todistaa oikeudessa

      10:49 "Välit ovat olemattomat" Minkälainen isäsi ja sinun välinen suhde on tällä hetkellä? "Minulla ei ole minkäännäkö
      Maailman menoa
      265
      9965
    2. K-kaupassa on mukava käydä, kun ei tarvitse katsella köyhiä

      vasemmistolaisia, joista monet myös varastavat. Mielellään maksaa vähän enemmän tuotteista K-kaupassa, jotka ovat paljon
      Maailman menoa
      192
      5684
    3. Suomeen ei kuulu ihmiset jotka ei halua kätellä toisia ihmisiä, koska tämä on vääräuskoinen

      Nainen joka ei halunnut kätellä Stubbia on selvästi ääripään muslimi, eli sitä sakkia josta niitä ongelmia koituu. Ulos
      Maailman menoa
      167
      5264
    4. PS:n Purra teki -JÄTTI-VELAT

      * * PS:n Purra teki -JÄTTI-VELAT - ! ja jätti MaksuHuolet -Kansan Maksettavaksi -! *
      Maailman menoa
      75
      4901
    5. Vain vasemmistolaiset rakennemuutokset pelastavat Suomen

      Kansaa on ankeutettu viimeiset 30+ vuotta porvarillisella minäminä-talouspolitiikalla, jossa tavalliselta kansalta on ot
      Maailman menoa
      7
      3183
    6. Persut huutaa taas: "kato! muslimi!"

      Persut on lyhyessä ajassa ajaneet läpi kaksi työntekijöiden oikeuksien heikennystä, joita se on aiemmin vastustanut. Pe
      Maailman menoa
      0
      2540
    7. Ootko sä nainen suuttunut

      jostain? Harmi jos tullut väärinkäsityksiä.
      Ikävä
      212
      2469
    8. Nainen, sanotaan että totuus tekee kipeää

      Ehkä mutta se voi olla myös se kaikkein kamalin asia kohdata. Kuplassa on turvallista, kun tietää vähemmän on helpompi.
      Ikävä
      12
      2289
    9. Valtio lopettaa pienituloisten perheiden kylpylälomien tukemisen

      Pienituloiset suomalaiset ovat voineet vuosikymmenten ajan hakea tuettuja lomia terveydellisin, sosiaalisin ja taloudell
      Maailman menoa
      354
      2032
    10. Menen nyt koisimaan

      Ja en ehkä palaa tänne. Asia on nyt loppuunkäsitelty ja totuus tuli ilmi
      Ikävä
      22
      1798
    Aihe