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

531

    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. Sairaammaksi menee: Musk alkaa sensuroida Zelenskyin viestintää X:ssä

      IL: Musk puuttuu Zelenskyin viestintään – X:ään tulossa muutoksia "Elon Musk sanoo korjaavansa X:n, jotta käyttäjät voi
      Maailman menoa
      350
      3148
    2. Mihin sinussa haluan koskea

      Tilanne, että pääsisin tutustumaan eri kohtiin sinussa, mitä haluaisin kokeilla. Käsiin haluaisin tutustua, hieroa niitä
      Ikävä
      67
      2790
    3. Kerro nyt jotain

      Itsestäsi minkä haluaisit kaivattusi tietävän?
      Ikävä
      127
      1782
    4. On tämä meidän ikäero jo turhan suuri

      Kannattaisi tutustua samanikäisiin.
      Ikävä
      118
      1480
    5. Toisen ihmisen sydämellä

      leikkiminen on äärettömän moraalitonta. Antaa turhiaa toiveita ja sitten olla kuin mitään ei olisi tapahtunut. Kuinka vo
      Ikävä
      146
      1400
    6. Oho! Toivo Sukari paljastaa erikoisista iltatoimista Nadja-vaimon kanssa: "Hän aina putsaa mun..."

      Oho! Onpa iltatoimet tällä pariskunnalla. Toivo Sukari ja Nadja Sukari menivät naimisiin v. 2019. Lue lisää: https://
      Suomalaiset julkkikset
      30
      1313
    7. PAM:in mainos, älä mene tänään ruokakauppaan

      kannatan kovasti kaupan työntekijöille lisää liksa. MUTTA lakossa on huonoa, nyt kauppiaat näkevät kuinka vähällä henki
      Ammattiliitot
      155
      1258
    8. Mitä ajattelet kun

      Katsot kaivattuasi silmiin? Mitä näet silmissä?
      Ikävä
      69
      1100
    9. Millaisena luonteena

      Pidät kaivattuasi??
      Ikävä
      74
      1099
    10. Olen otettu, mutta turhaan kulta testailet

      Sinua minä vaan ❤️
      Ikävä
      70
      1040
    Aihe