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