Onko kenelläkään tietoa, mistä saisi yllä mainittuihin ohjelmiin kirjallisuutta? Mielellään sellaista, jossa opastettaisiin ohjelman käyttöä ja jossa olisi erilaisia harjoituksia.
Onko aikaisemmasta versiosta olemassa hyvää kirjaa tai materiaalia, jota voisi käyttää myös näitten ohjelmien opiskelussa?
Onko aikaisemmasta versiosta olemassa hyvää kirjaa tai materiaalia, jota voisi käyttää myös näitten ohjelmien opiskelussa?
Vastaukset 15
Vanhimmat
avukseen kirjallisuutta. Siinä on niin helppo luoda wizardien avulla haluamiaan projekteja. Tai sitten vaan alkaa kirjoittaa ohjelmaa ja kääntää sen. Ja sitten vaan ajoksi. Muutama hiiren painallus vaan.
Tuosta Borland-versiosta ei kokemusta, mutta oletan sen olevan astetta epävakaampi ja epätäydellisempi, mikäli vanhat merkit pitää paikkansa.
>...mikäli vanhat merkit pitää paikkansa.
Sitä se teettää kun ei ole kokemusta. Totuus on että Borlandin kehitysympäristöt on AINA olleet askeleen edellä Microsoftin vastaaviin.
siitä on jo lähes 15 vuotta aikaa. Sen jälkeen Microsoft meni heittämällä Borlandin ohi kehitysympäristöissä, ja ero on vaan kasvanut vuosien varrella.
Ei voi muuta sanoa. Olet joko mikkiksen kauppias tai et vaan yksinkertaisesti tiedä asiasta tuon taivaallista.
ja on oikeassa.
mot
...surutta edustamaansa tuotetta tosiasioista välittämättä.
Onks tietoo? Koulutusta? Kokemusta?
Koulutus vähintäänkin riittävä ja noin 15 vuotta on tullut ohjelmoinnilla tienattua voita leivänpäälle ja vähän särvintäkin.
Joten poikasten on ihan turha tulla urputtamaan.
sinä poikanen.
>sinä poikanen.
Äidinkielenopiskelusi näyttää olevan pahasti kesken mutta sitten kun teille siellä koulussa opetetaan sitä laskentoa (se on sitä missä numeroilla tehdään kaikkia jänniä juttuja) niin pyydäpä opettajaa laskemaan kanssasi minkähän ikäinen minä mahtaisin olla.
Oletuksena siis että lukion jälkeen olen hankkinut ammatillisen koulutuksen ja sen jälkeen työelämässä nuo mainitut 15 vuotta.
sinä olet poikanen, korvantaukset vielä märät.
Loppuiko argumentit? :)
Kun kasvat aikuiseksi niin tulet huomaamaan että että useimmiten keskustelussa ei jankuttamalla saa mielipiteitään läpi. Kannattaa keksiä parempia perusteluja tai tunnustaa senhetkinen tappionsa ja koettaa uudestaan tilaisuuden tullen.
Tähän ei Borlandkaan pysty.
Borlandilta löytyy myös Delphi, en tiedä, josko se kuuluu nykyisin osana tuohon Borland studioon.
Mainio kieli, pystyvä kuin C , mutta ei läheskään niin virhealtis, ja syntaksiltan selkeä.
Moni myös turhaan vieroksuu ajatusta ohjelmoinnista kahdella eri kielellä. Itse koodaan kaiken itse kirjoittamani Delphillä (MS-Windows) tai Kylix3:lla (Linux).
Mutta netistä löytyy valtava määrä C -kielistä lähdekoodia, joka on mukava saada hyötykäyttöön.
Itse teen yleensä niin, että käännän C -lähdekoodin dynaamiseksi linkkikirjastoksi: Windowsissa .DLL ja Linuxissa .so -päätteiseksi tiedostoksi.
Sitten vain kirjoitetaan Delphille/Kylixille import unit, jolla tuo DLL tai .so saadaan hyötykäyttöön.
kaksikieliohjelmoinnissa täytyy ottaa huomioon pari asiaa:
1. C :n "name mangling": tämän saa pois näin:
extern "C" {
// funktioiden määrittelyrivit tähän
}
2. kutsutavat (Calling conventions)
Oletuksena, jos ei muuta mainita, ovat nämä:
Windowsissa: stdcall, paitsi COM -rajapintojen yhteydessä safecall
Linuxissa: cdecl
Lisäksi, jos aliohjelma ottaa vaihtelevan määrän argumentteja, tällöin kutsutapa on aina cdecl.
tuossa cdeclissä käytäntönä (ainoana) on "caller pops"... ja tämä onkin luonnollista, jos argumenttien määrä vaihtelee, sillä funktiohan ei silloin itse tiedä argumenttien määrää/kokoa, eikä siksi voi itse siivota pinoa, vaan se on kutsujan tehtävä.
Mikäli kutsutapa on epäselvä, voi aina tehdä testin:
esim. Delphissä näin:
var
ESP_SAVE : Longword; // 32 bits
Ok : Boolean;
procedure Make_Test_Call;
begin
//
Ok := False;
asm
mov [ESP_SAVE], ESP
end;
Function_To_Test(Arg1, Arg2);
// kutsu testattavaa funktiota
asm
cmp ESP,[ESP_SAVE]
jne @@9
mov [byte ptr Ok],1
@@9:
end
asm
mov ESP,[ESP_SAVE],
end;
end;
Tuon Make_Test_Call -rutiinin suorituksen jäkeen:
OK=FALSE: Pinon siivous meni väärin, joten kutsutavasta on erimielisyyttä kutsujan ja kutsuttavan kesken, korjaa!
OK=TRUE: Pino siivottiin oikein, joten kutsutapa on ainakin siltä osalta ok. Tarkista vielä, ettei Arg1 ja Arg2:n arvo vaihdu keskenään! Jos vaihtuu, luepa dokumentaatiosta, missä kutsutavassa pinoon työnnetään "Left to Right" ja missä "Right to Left" -järjestyksessä.
Ja vielä: Jotkut C -kääntäjät lisäävät funktionimen alkuun alaviivan, vaikka on tuo extern "C". Jos näin, silloin esim. tämä auttaa Delphissä/Kylixissä:
const
{$IFDEF WIN32}
SomeLibName = 'somelib.dll';
{$ENDIF}
{$IFDEF LINUX}
SomeLibName = 'somelib.so';
{$ENDIF}
function Function_To_Test(Arg1, Arg2:Integer):Integer; external SomeLibName name '_Function_To_Test';
Joissakin kääntäjissä on myös kutsutapa "register". Nopea, mutta älä käytä muuten kuin ohjelman sisällä.
Syy: se, mitä rekistereitä käytetään ja missä järjestyksessä/millä ehdoilla, vaihtelee eri (valmistajien) kääntjien välillä.
Siksi esim. Delphin "register" on epäyhteensopiva MS-VC:n "register":in kanssa.
tässäpä olikin pikakurssi kaksikieliohjelmoinnista.
Delhin ja Kylixin (miksei myös Borland C builderin) kanssa hyötyä on myös TDump -ohjelmasta (windows). Linuxille oli joku omansa, joka osaa kurkistaa linuxin ELF -tiedostojen sisään. Tällä voit tutkia, mitä importoidaan / exportoidaan ohjelmassa tai dynaamisessa linkkikirjastossa.