LexSup och Lazarus ================== 2013-03-28 Jag har lagt in wubi till nivån två bokstäver plus siffra. Jag ha också lagt med hjälpprogrammet Konv (skrivet i Delphi6) i lexsuplaz.zip. Längst ner på öppningssidan står hur man hämtar och lägger in wubitecken. 2011-02-05 Jag har bytt plats på två rader i "Auto" i "Spelled Speech" så nu fungerar det. Jag har också lagt in en möjlighet att få avslutande mellanslag efter ord efter dubbelkomma att betyda samma som 1. Den punkt framför Charset som tidigare betydde aktivering av Memoruta betyder i LexSupLaz att avslutande mellanslag skall ersätt med första UTord. Tanken med det är att man skall kunna skriva kinesiska genom att i svkin lägga in den västerländska transkriptionen av kinesiska ord. Om man då skriver dem efter dubbelkomma slås de upp och ger motsvarande tecken i första utordrutan. När man avslutar ordet med mellanslag ersätts då det men skrivit med tecknet. På det sättet kan man skriva pinyin (västerländsk transkribering av uttal) och få skriften med kinesiska tecken. Jag kan tyvärr för lite kinesiska för att kunna lägga in detta så tills vidare är det bara en outnyttjad möjlighet. 2011-02-03 Eftersom Lazarus saknar MediaPlayer och WebBrowser har jag gjort programmen "Mediap.exe" och "WebBrowser.exe". Dessa går även att använda stand-alone eller i andra lazarus-program eller i andra program som kan starta .exe-filer och läsa och skriva diskfiler. I mapparna "KällkodMP" och "KällkodWB" finns deras källkod (Delphi6) och bruksanvisning som beskriver hur de kan användas. "Mediap.exe" börjar nu fungera så att "Spelled speech" delvis fungerar. 2011-01-29 Lexsup kan hantera ljudfiler, bland annat för att man i lexikon skall kunna ange uttal. I Lazarus finns ingen MediaPlayer som kan användas som den den i Delphi. Jag har försökt lösa detta på liknande sätt som med WebBrowsern. Jag har alltså i Delphi gjort en MediaPlayer som LexSupLaz kan öppna via kommandoraden. Och liksom WebBrowsern går det att kommunisera med MediaPlayern via en .ini-fil. Såväl WebBrowsern som MediaPlayern går naturligtvis att använda även i andra sammanhang. Jag har i "Bruksanvisning.txt" som ligger i mappen MPKällkod börjat beskriva hur man använder MediaPlayern. "Spelled speech" fungerar ännu inte tillfredsställande men jag har lagt med det som finns av koden. 2011-01-26 Nu fungerar även "Insortering", "Lexikonomvändning" och "Listsammanläggning" - för engelska alfabetet. Om man dubbelklickar på den gula OrdFras2-rutan får man upp filen OrdFras2.tab från den mapp där LexSupLaz öppnades. Den visas utefter fönstrets högra kant. Om man där har visning av kinesiska tecken täcks dessa över men vid nästa växling av kinesiska tecken tar dessa över rutan. 2011-01-24 Jag har lagt in "Textkontroll" och "Lexikon till Lista" i LexSuPLaz. För att visa resultat i Utfilrutan måst man koda om till UTF8 för det som inte redan är UTF8 men man får inte koda om det som redan är UTF8. Det här fungerar inte helt OK men det får vara så här tills vidare. 2011-01-20 Om man som Lexikon1 aktiverar det svensk-kinesiska lexikonet (svkin) som följer med i lexsuplaz.zip kan man nu skriva ett par hundra kinesiska tecken. Observera att du måste ha fonten "Ariel Unicode MS" installerad med kinesiska tecken för att det skall fungera. För att skriva via Tvåbytestangentbordet måste du klicka i den lilla vita rutan i tangentbordets övre högra hörn så att den får focus. En viktig fördel med UTF8-text är att man kan blanda kinesiska tecken med västerländsk skrift. Om du klickar på Utfilrutan får den focus så att du som vanligt kan skriva i den. Uppslag med dubbelkomma fungera oberoende av om du skriver från tvåbytestangentbordet eller direkt i Utfilrutan. Jag har också lagt in en möjlighet att granska diskfiler. Du når den möjligheten via "Arkiv - Visa Hackerbild". I LexSup finns en möjlighet att välja font. Men i LexSupLaz påverkar fontvalet inte bara hur bokstäverna ser ut utan även hur kodningen till UTF8 fungerar. Jag tänker därför tills vidare inte lägga in någon möjlighet att välja font. Eftersom Lazarus är fritt tillgängligt kan du, om du vill, gå in i källkoden och byta fonter för att sedan kompilera om programmet. I LexSup går det också att ändra Utfilrutans bredd Och radbrytningen ändras då genom att Utfilrutan har WordWrap. I LexSupLaz kan man på vanligt sätt ändra fönsterbredd och Utfilrutan anpassa då till tillgängligt utrymme. Men för SynEdit som används i LexSupLaz finns inte WordWrap. Radbrytningen påverkas därför inte om man ändrar Utfilrutans bredd. Fortfarande kan det vara problem med namn på mappar och filer som innehåller å, ä eller ö. Undvik om möjligt sådana. 2011-01-16 Att fixa problemet att LexSupLaz inte hittade filen med å, ä eller ö i det fullständiga filnamnet visade sig vara knepigare än väntat. Det visade sig att Lazarus omkodning ÄNDRAR I DISKFILEN, en nästan kriminell åtgärd. För att komma runt problemet har jag gjort en procedur som kopierar diskfilen till LexSupTrans2Qvaolett.htm som sedan hämtas in till Utfilrutan. Jag har också påbörjat omläggning av de kinesiska lexikonen för charset 134. Med Microsoft Word kan man (ibland) koda om från 134 till Unicode-UTF8. Det funkar hyfsat för svensk-kinesiska lexikonet (svkin) men ännu finns inget sätt att skriva kinesiska. Jag lägger ut det som finns i befintligt skick. 2011-01-11 En viktig del av LexSup är att man kan ha en öppen Browserruta nedanför Utfilrutan. Där kan man direkt se hur resultatet ser ut i en WebBrowser när man skriver html-text i Utfirutan. Och man kan visa resultat av uppslag i Internet-lexikon. Och naturligtvis surfa på Internet. Lazarus har inte någon WebBrowser som är tillgänglig på samma sätt som WebBrowsern i Delphi. Möjligheten att använda en Browserruta måste alltså lösas på något annat sätt. I en Unit som heter UTF8Process finna en möjlighet att från Lazarusprogram komma åt operativsystemets kommandorad. Det gör att man kan öppna andra program. Märkligt nog tycks det inte finnas något sätt att via det öppnande programmet stänga program som öppnats på det sättet. Man måste stänga programmen manuellt. Det går alltså att med Delphi göra en WebBrowser som LexSupLaz kan öppna. En sådan WebBrowser fungerar bara under Windows och den blir kopplad till Internet Explorer men det blir en möjlighet som fungerar i om man har ett sådant operativsystem. Om man öppnar en WebBrowser via LexSupLaz får man inte tillgång till dess interface. Man kan alltså inte direkt kommunicera med den. Men en möjlighet är att använda en .ini-fil till WebBrowsern. Både WebBrowsern och LexSupLaz har då tillgång till WebBrowser.ini och kan kommunicera via denna fil. För att få WebBrowsern att öppna nedför Utfilrutan kan LexSupLaz lägga in öppnings- koordinater i WebBrowser.ini innan det öppnar WebBrowser.exe. Och det kan också lägga in URL i WebBrowser.ini. Eftersom LexSupLaz inte kan stänga WebBrowser kommer varje anrop av WebBrowser.exe att öppna en ny Browserruta. Detta är inte bara en nackdel. Ibland kan det vara motiverat att ha flera Browserrutor öppna samtidigt. Kommunikationen via WebBrowser.ini gör att varje ny Browserruta öppnas nedanför Utfilrutan. Men när en Browserruta har öppnats kan man flytta och ändra storlek på den som på vilket fönster som helst. När man skriver i Utfilrutan kan man inte som i LexSup få en omedelbar uppdatering av Browserrutan. Kommunikationen sker via diskfilen med Utfilnamn. Diskfilen måste alltså uppdateras och Browserrutan måste uppdateras. Detta görs i LexSupLaz på liknande sätt som uppdatering via mus i LexSup. Under Utfilrutan finns en röd linje. När man drar musen över den linjen uppdateras filen Utfilnamn. OBSERVERA ATT DENNA SKRIVS ÖVER UTAN NÅGON VARNING!!! I överkant på Browserrutan finns en vit linje. När musen dras över denna uppdateras Browserrutan. Om man drar musen från Utfilrutan till Browserrutan uppdateras alltså först diskfilen Utfilnamn och därefter uppdateras Browserrutan. För att hålla reda på hur många Browserrutor man har öppna har jag på första raden i WebBrowser.ini lagt in antalet öppna Browserrutor. Denna siffra visas i Browserrutans ovankant och den uppdateras varje gång som Browserrutan uppdateras. Har du inte gjort något som ger ett Utfilnamn heter utfilen LexSupTrans2Qvaolett.htm, en fil som i vissa fall skrivs över utan någon varning. WebBrowser.exe och WebBrowser.ini kan naturligtvis användas även i andra Lazarusprogram där man vill ha tillgång till en WebBrowser. För att ändra i den behöver man ha tillgång till Delphi6. Jag lägger med källkoden dels för alla som vill ändra i den dels för alla som vill se vad den egentligen gör. Jag har nu lagt med det som behövs för att visa Browserrutan men jag har ännu inte lagt in hämtning av uppslag i Internetlexikon. 2011-01-08 I charset 204 är de kyrilliska bokstäverna inflyttade i teckenbytens fjärde nibble genom att de förskjutits 848 steg. I charset 161 är de grekiska bokstäverna inflyttade i teckenbytens fjärde nibble genom att de förskjutits 720 steg. Jag har nu lagt in även grekiska bokstäver i LexSuplaz. Jag har även lagt in återföring av UTF8-tecken för lexikonens filnamn. 2011-01-06 Det börjar nu så smått gå att skriva (och läsa) ryska med lazarusversionen av LexSup. I Delphi-versionen lade jag in musskrift innan jag började prova olika tangentbord för specialtecken. Jag har ännu inte lagt in musskrift i lazarusversionen vilket kräver en del nödlösningar eftersom tangentbord för specialtecken till stor del byggde på musskrift. Lazarus användning av UTF8 ger också en ganska rejäl förändring av förutsättningarna för att hantera specialtecken. Att använda en särskilt memoruta för att visa skriften med rätt charset är inte längre motiverat. Och lazarus sparar direkt Utfilrutan med UTF8-kod. För att aktivera tangentbordet för kyrilliska bokstäver klickar du på Lex1 och letar fram filen aalt.lex i mappen Ryska/svry. I samma mapp finns en fil som heter teck.tab där det på rad 12 står .204 vilket betyder att lexikonet är gjort för charset 204 det vill säga för kyrilliska alfabetet. LexSup kollar bara i Lexikon1 efter teck.tab. Om det hittar 204 eller .204 på rad 12 ställs all text om för ryska tecken. Tangenterna för Å, Ä och Ö ger annan teckenkod i Lazarus än i Delphi. Jag har ännu inte rättat detta och dessa tangenter fungerar alltså inte i tangentbordet för specialtecken men man kan liksom i musskrift skriva tecknen genom att klicka på teckenrutorna. Länk till det som finns av lazarusversionen finns längst ner på denna sida. 2011-01-03 LexSup är skrivet i Delphi6. För mig har det varit en stor fördel att jag haft möjlighet att enkelt ändra i LexSup. När jag behövt någon ny möjlighet har jag skrivit en procedure eller function och lagt in den i LexSup. En del av dessa har fått följa med i den version som jag lagt in i installationsprogrammet men även om jag lagt med hela källkoden har det inte varit lika enkelt för alla att ändra i LexSup. För att kunna det måste man ha tillgång till Delphi6 som ägs av Borland och inte får spridas fritt. Nu finns det ett program som heter Lazarus som har hämtat mycket från Delphi och som är fritt tillgängligt. Det kan laddas ner från http://sourceforge.net/projects/lazarus/ Lazarus använder kompilatorn från FreePascal som finns på www.freepascal.org/docs.var Jag har börjat skriva om LexSup i Lazarus. Det blir alltså ett program där du kan hämta Lazarus och köra källkoden så att du kan göra vilka ändringar eller kompletteringar du vill. Berätta gärna om du hittar någon bra förbättring!!! Omskrivning från Delphi till Lazarus är inte helt enkel. Visserligen går en del av koden att använda direkt men skillnaderna är ändå betydande. Det finns i Lazarus en möjlighet att automatiskt konvertera ett projekt från Delphi till Lazarus och det är möjligt att det fungerar på mycket enkla program men det gör inte något användbart av LexSups källkod. Jag har nu börjat att skriva om LexSup bit för bit från Delphi till Lazarus och tänker lägga ut resultatet allt eftersom det växer fram. Det som ligger som LexSupLaz är alltså inte ett färdigt program, det är några steg på vägen mot ett färdigt program. En viktig skillnad mellan Delphi och Lazarus är att medan Delphi inte kan hantera UTF8 är Lazarus helt UTF8-baserat. För engelska alfabetet innebär detta ingen nämnvärd skillnad eftersom teckenbytens första halva där alla engelska bokstäver ligger är oförändrad i UTF8. Men för svensk text ger Å, Ä och Ö problem. Å, Ä och Ö har gjort en irrfärd genom fontkartan. I gamla DOS använde man 7-bits-tecken. Man lade alltså alla tecken i teckenbytens första halva alltså i första och andra nibble. Egentligen lade man alla bokstäver i andra nibble. För alfabet med specialtecken som Å, Ä coh Ö tog man några av de icke-bokstavstecken som man fått rum med inom andra nibble. Till exempel tog man bort hakparenteserna. När datorernas minnen växte minskade kravet på att snåla med minnesutrymme coh man började alltmer använda 8-bits-tecken. I Turbo-Pascal låg Å, Ä och Ö i teckenbytens tredje nibble. För att kunna hantera alfabet som det grekiska, det kyrilliska eller det arabiska använde man sig av charsets som placerade dessa alfabet i teckenbytens fjärde nibble. Man lade alltså in tecken i tvåbytes Unicode och lyfte med hjälp av charset-val in dem i teckenbytens fjärde nibble. Å, Ä och Ö flyttades nu till fjärde nibble. Det innebar att om man valde ansi-charset låg Å, Ä och Ö i teckenbytens fjärde nibble men om man bytte charset till till exempel 204 (ryska bokstäver) ersattes Å,Ä och Ö med kyrilliska bokstäver. I LexSup gjorde jag några försök att flytta tillbaks Å, Ä och Ö till de gamla Turbo-Pascal-positionerna så länge man hade ett charset som använde teckenbytens fjärde nibble. Men det visade sig fungera dåligt. LexSup skall ju fungera för två språk vilket innebär snabba skift mellan olika charsets och det blev knepigt att hålla reda på var Å, Ä och Ö låg och hur de skulle läsas från ingående text. Men rester av denna omflyttning ligger kvar i LexSup. I Lazarus används Å, Ä och Ö i form av Unicodenummer kodade enligt UTF8. Eftersom Unicode- nummer för Å, Ä och Ö ligger i teckenbytens fjärde nibble blir UTF8-koden två bytes. I LexSups lexikon används enbytes eller tvåbytes tecken enligt Unicode eller charset. Och för filnamn och webadresser abvänds vanligen ANSI:s teckenkod. Det betyder att Lazarus UTF8-kod måste omvandlas i filnamn, webadresser och vid uppslag i lexikon. Det finns i Lazarus en mängd kodomvandlingar men jag har inte hittat någon bra beskrivning på hur de skall användas. I LexSup försökte jag konvertera UTF8 till en- eller tvåbytestecken och jag har tagit denna kodomvandling och lagt in den i LexSuplaz. Jag provar alltså med att omvandla strängar till rätt format innan jag använder dem. Det som finns går att hämta i en zip-fil på lexsuplaz.zip _________________________________ _____________________Till http://www.lexsup.se