PC老朽化更新で困ること
GASとは違いますが、残しておきたい知識があるので記載しておきます。
Windows2000やXPから、Windows7や10へ更新する中で
障害となった問題と解決方法を紹介します。
VisualBasic6.0
・Windows7、10で起動させるとRuntimeErrorが出る
32bitOSと64bitOSでOSのフォルダ構成が変化しています。
32bit環境で動作していたソフトは、64bit環境でも32bit環境のように
動くことができるように設定する必要があります。
64bitOSで注目するフォルダは以下です。
C:\Windows\System32
C:\Windows\SysWOW64
フォルダ名だけみると、System32には「32bit」関連のファイル、
SysWOW64には「64bit」関連のファイルに思えますが、実は逆です。
System32は「64bit」関連、SysWOW64は「32bit」関連のファイルです。
VB6のソフトはSystem32を参照するが、今まであったファイルがない!
ということでRuntimeErrorを出しています。
解決方法1
自身で必要なファイル(DLLなど)をコマンドで登録する
解決方法2
フリーソフトを利用する
※筆者は、「XTRM Runtime」を利用させていただいてます。
「XTRM Runtime」VB/VCの各種ランタイムを一括導入 - 窓の杜
・Windows7、10で起動させると背景やテキストボックスの色が変わる
上記同様に64bitからOSのカラーパレットの設定が変化しています。
2000やXPでは背景が青だったのに、7や10だと黒になっていたり、
テキストボックスの背景が白から黒といった現象を確認しています。
※知る限りでは、Windows7から変化している
カラーパレットはOSのレジストリで管理されているので、
レジストリを変更することで解決できます。
解決方法1
レジストリを変更する
ファイル名を指定して実行で、「regedit」を実行する。
レジストリエディターが開かれるので、以下のパスを辿る
HKEY_CURRENT_USER\Control Panel\Colors
Colorsの中に多くの項目があるが、以下の項目変更する。
Background ・・・ 背景の色が変わる
TitleText ・・・ テキストボックスの色が変わる
※どちらもRGBで色を指定する。例)青:0 0 255
解決方法2(Windows10のみ)
個人用設定の色で、アクセントカラーを変更する。
この場合、背景色はアクセントカラーと同じ色に変わるが、
テキストボックスは変化はありません。
解決方法3(Windows7のみ)
個人設定のテーマから。Windowsクラシックを選択する。
この場合、背景色もテキストボックスの色も変化します。
関数とは
記述:2021/12/06
更新: 2022/01/05
>>前記事
■関数(Function)とは
Functionは、機能、働き、職能などといった意味を持つ単語です。
ここではプログラムの中で、変数の処理手順が記述された一連の処理を指します。
別の関数をを呼び出すこともでき、その結果を自身に戻すことも可能です。
■(筆者の)イメージ
変数 = グラス
処理手順 = 運搬手段
一連の処理 = ベルトコンベア
グラスの運搬手段が決まっているベルトコンベアをイメージしています。
■関数の書き方
Function 関数の名前 () {
※ここにコード(変数や処理手順)を記述する
}
■一連の処理とは
Function ABCDE () {
var glass = ";
glass = ”オレンジージュース”
}
関数ABCDEが実行されると変数glassにはオレンジジュースが代入されます。
いつ、誰が実行しても記述されたコードを処理することを一連の処理としています。
■関数のコード進行
■参考本の紹介
変数宣言の注意点
記述:2020/12/06
更新: 2021/12/12
>>前記事
■変数の宣言
以前の記事で紹介していますが、本記事でも記載しておきます。
宣言種類 宣言名 = 内容;
var glass = "オレンジジュース";
let glass = "グレープジュース";
const glass = ”リンゴジュース”;
■変数に空白を宣言する時
GASは空白を宣言する時に注意が必要です。
変数に空白を宣言する方法を以下に挙げます。
var glass
var glass = ""
var glass = ””;
上記の3つどれも変数に空白を宣言しているのですが、
GASでは一番の上の「var glass」が特に注意が必要です。
空白であればif文を実行し、
glassにオレンジジュースを代入する処理を作って検証します。
①「var glass」で宣言
var glass
if( glass == "" ){
glass = ”オレンジジュース”;
}
①の検証結果
if文は実行されず、glassにオンレジジュースは再代入されていません。
実は「var glass」と宣言すると、GASのルールに沿っていない書き方のため、
「定義されていません」という「undefined」が内容に入ってしまいます。
var glass ←この時点で「undefined」が入る
if( glass == "" ){ ←glassの内容が、空白と一致しないため実行されない
glass = ”オレンジジュース”;
}
②「var glass = ""」で宣言
var glass = ""
if( glass == "" ){
glass = ”オレンジジュース”;
}
②の検証結果
if文が実行され、glassにオレンジジュースは再代入されます。
ただし、ステートメントが終了されていないため、こちらもGASのルールに沿っていない書き方なので、同じ処理が100%実行されるとは限りません。
var glass = "" ←空白が入る。極稀に「undefined」の可能性がある
if( glass == "" ){ ←「undefined」だった場合は実行されない
glass = ”オレンジジュース”;
}
③「var glass = "";」で宣言
var glass = "";
if( glass == "" ){
glass = ”オレンジジュース”;
}
③の検証結果
if文が実行され、glassにオレンジジュースは再代入されます。
これはGASのルールに沿っており、100%実行されます。
var glass = ""; ←空白が入る
if( glass == "" ){ ←glassは「 空白」であるため実行される
glass = ”オレンジジュース”;
}
■関数とは
■参考本の紹介
ステートメントの終了
記述:2020/11/29
更新:2020/12/06
>>前記事
■ステートメント -- statement
1.(意図や政策などを)述べること、発言すること
2.(述べられた)発言、意見
3.(公の場で出す)声明、ステートメント
上記のような意味を英単語です。
しかし、コーディングでは上記のような意味で使われていません。
プログラムが実行する1つの処理のことです。
例:3つのステートメントで構成
var x = 10; ←1つ目の処理
var y = 20; ←2つ目の処理
var z = x + y; ←3つ目の処理
■「;(セミコロン)」の意味
宣言の終わり、式の終わりといった「文の終わり」といった意味になります。
※ステートメントは人によって解釈が分かれます。
■記述例
例1:宣言の終わり
誤)var glass = "オレンジジュース"
正)var glass = "オレンジジュース";
例2:式の終わり
誤)var glass = x + 10
正)var glass = x + 10;
■注意点
「文の終わり」と表現していますが、中には特定の記述で利用したり、
文の開始と終了が別記号での場合があるため、コーディングした全ての文に
「;(セミコロン)」をつけるとエラーになるので注意が必要です。
※ここで例としてあげている「if」文は別記事で紹介します。
例:誤った使い方
var x = 5;
if( 0 < x ){;
var y = "xは0より大きいです";
};
例:正しい使い方
var x = 5;
if( 0 < x ){
var y = "xは0より大きいです";
}
■変数宣言の注意点
■参考本の紹介
変数の宣言(データの型)
記述:2020/11/26
更新: 2021/12/12
>>前記事
■変数の型
前記事の宣言方法で「”(ダブルコーテーション)」を使っていました。
これはデータの型を表していて、コーディングで重要な役割を持ちます。
この記事では、特によく使われる2つの型を紹介します。
文字列型
読んで字のごとく、宣言した内容を文字として扱うための宣言方法です。
宣言の内容を「”(ダブルコーテーション)」で囲むと文字列として認識されます。
例:var glass = "オレンジジュース";
数値型
宣言した内容を数値扱うための宣言方法です。
文字列とは違い内容四則演算(加減乗除)が実行できます。
例:var glass =10;
1)数値型と文字列型はどう判断すれば良いか
宣言する内容が、算用数字であるか、ないかで判断すれば良いです。
「オレンジ」>>算用数字に含まれないため文字列型
「1000」>>算用数字に含まれるため数値型(文字列でも可)
「0010」>>1文字、1文字は算用数字のため数値型に思えるが、
「0010」で判断すると算用数字に含まれないため文字列型
2)数値型の宣言方法で、文字を宣言するとどうなるか
これはGASを保存するときにエラーとなったり、
万が一保存できたとしても実行時にエラーとなります。
つまり、記述することができません。
3)文字列型の宣言方法で、算用数字を宣言するとどうなるか
算用数字は文字列でもあるので、問題なく宣言できます。
しかし、文字列のため四則演算には利用することができません。
変数の宣言
記述:2020/11/18
更新:2020/11/26
>>前記事
■宣言種類
2020/02/06に公開された「V8ランタイム」で「let / const」の2種類の宣言方法が追加されました。
var -- variable(変数)の略
再宣言 -- 可能
再代入 -- 可能
let -- 「let」は「let」のため略称でなく、選ばれた理由は諸説あるようです。
再宣言 -- 不可
再代入 -- 可能
ブロックスコープであり、利用範囲を制限することが可能です。
const -- constant(定数)の略
再宣言 -- 不可
再代入 -- 不可
ブロックスコープであり、利用範囲を制限することが可能です。
■宣言方法
※「 」半角スペース利用しています。
宣言の書き方
宣言種類 宣言名 = 内容;
上記の書き方で変数を宣言することができます。
前記事でも紹介した「変数名:grass」を3種類で宣言すると、
var glass = "オレンジジュース";
let glass = "グレープジュース";
const glass = ”リンゴジュース”;
この時の3つのグラスの中身は、
varの時、オレンジジュース
letの時は、グレープジュース
constの時は、リンゴージュース
どの宣言種類を使っても、書き方は同じです。
「"(ダブルコーテション)」や「;(セミコロン)」は次の記事で説明します。
■宣言時の注意点
変数とは
記述:2020/11/13
更新:2020/11/18
変数に関しては個人で考え方、感じ方が違うので、変数を言葉で表現すると
考え方の違いあると思います。一個人の考えだと思って読んでください。
■変数とは
変数は飲み物を入れる「グラス」だと思ってください。
以下の行動を行うとします。
- グラスを準備する。
- グラスにオレンジジュースを注ぐ。
- グラスのオレンジジュースを飲み干す。
- グラスにグレープジュースを注ぐ。
ここで注目してもらいたいのが、グラスの中身です。
- グラスの中身は空
- グラスの中身はオレンジジュース
- グラスの中身は空
- グラスの中身はグレープジュース
コード風に記述する。
- グラス は (空)
- グラス は オレンジジュース
- グラス は (空)
- グラス は グレープジュース
コードに変換する。(空は半角スペースで表しています。)
- glass = " "
- galss = "オレンジジュース"
- glass = " "
- glass = "グレープジュース"
この中身が変わるけど、名前は変わらないものが変数です。
変数の宣言など細かな部分は別記事で説明します。
■変数の宣言