月別アーカイブ: 2024年8月

Ubuntu 24.04 Lazarusでmysqlに接続する

LazarusでMysqlに接続する

1,接続
2,読み込み(Select)
3,挿入(Insert)
4,アップデート(Update)
5,削除(Delete)

ポイント
 TMySQL80Connection
 TSQLQuery
 TSQLTransaction
を、使用する。

以前の投稿を、参考にして、


procedure TForm1.Button1Click(Sender: TObject);
var
StrText:string;
begin
if not MySQL80Connection1.Connected then MySQL80Connection1.Open;
if MySQL80Connection1.Connected then begin
SQLQuery1.DataBase := MySQL80Connection1;
SQLQuery1.SQL.Text := 'select p_name from m_product where p_name="'+edit1.text+'" and p_code = "'+edit2.text+'" ';
SQLQuery1.Open;
if SQLQuery1.EOF then begin
StrText :='商品と商品コードが一致しません';
MessageDlg(StrText, mtInformation, [mbYes], 0);
end
else  begin
StrText :='商品と商品コードが一致しました';
MessageDlg(StrText, mtInformation, [mbYes], 0);
end;
SQLQuery1.Close;
end;
MySQL80Connection1.Close();
//Button1.caption:='漢字を表示';
end;

procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
s:string;
begin
if not MySQL80Connection1.Connected then MySQL80Connection1.Open;
if MySQL80Connection1.Connected then begin
SQLQuery1.DataBase := MySQL80Connection1;
SQLQuery1.SQL.Text := 'select p_name,p_code from m_product ';
SQLQuery1.Open;
SQLQuery1.Open;
i:=1;
while not SQLQuery1.EOF do
begin
if i+1>StringGrid1.RowCount then StringGrid1.RowCount:=StringGrid1.RowCount+1;
//        s:= SQLQuery1.Fields[0].AsString;
//        StringGrid1.Cells[i+1,0]:=SQLQuery1.Fields[0].AsString;
StringGrid1.Cells[1,i]:=SQLQuery1.FieldByName('p_name').AsString;
StringGrid1.Cells[2,i]:=SQLQuery1.FieldByName('p_code').AsString;
i:=i+1;
SQLQuery1.Next;
end;
StringGrid1.RowCount:=i;
 SQLQuery1.Close;
  MySQL80Connection1.Close;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
i:integer;
s,sql:string;
begin
if not MySQL80Connection1.Connected then MySQL80Connection1.Open;
if MySQL80Connection1.Connected then begin
SQLQuery1.DataBase := MySQL80Connection1;

if not SQLTransaction1.Active then SQLTransaction1.StartTransaction;
sql:='INSERT into m_product (p_name,p_code,update_date,create_date) VALUES';
sql:=sql+'("'+edit3.Text+'","'+edit4.Text+'",now(),now())';

MySQL80Connection1.ExecuteDirect(sql);
SQLTransaction1.Commit;
end;
SQLQuery1.Close;
Button2Click(Sender);
MySQL80Connection1.Close;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
i:integer;
s,sql:string;
begin
if not MySQL80Connection1.Connected then MySQL80Connection1.Open;
if MySQL80Connection1.Connected then begin
SQLQuery1.DataBase := MySQL80Connection1;
if not SQLTransaction1.Active then SQLTransaction1.StartTransaction;
sql:='update  m_product set p_code="'+edit6.Text+'" where p_name = "'+edit5.Text+'"';
MySQL80Connection1.ExecuteDirect(sql);
SQLTransaction1.Commit;
end;
SQLQuery1.Close;
Button2Click(Sender);
MySQL80Connection1.Close;

end;

procedure TForm1.Button5Click(Sender: TObject);

var
i:integer;
s,sql:string;
begin
if not MySQL80Connection1.Connected then MySQL80Connection1.Open;
if MySQL80Connection1.Connected then begin
SQLQuery1.DataBase := MySQL80Connection1;
if not SQLTransaction1.Active then SQLTransaction1.StartTransaction;
sql:='delete from  m_product where p_name = "'+edit7.Text+'"';
MySQL80Connection1.ExecuteDirect(sql);
SQLTransaction1.Commit;
end;
SQLQuery1.Close;
edit8.Text:=sql;
Button2Click(Sender);
MySQL80Connection1.Close;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
MySQL80Connection1:= TMySQL80Connection.Create(nil);
MySQL80Connection1.HostName := 'xxx.xxx.xxx.xxx';
MySQL80Connection1.CharSet:='utf8mb4';
MySQL80Connection1.UserName := 'xxxx';
MySQL80Connection1.Password := 'xxxx';
MySQL80Connection1.DatabaseName:='xxxx';
SQLQuery1:= TSQLQuery.Create(nil);
SQLTransaction1:= TSQLTransaction.Create(nil);
SQLTransaction1.SQLConnection:=MySQL80Connection1;
StringGrid1.RowCount:=1;
StringGrid1.ColCount:=3;
<pre><code> StringGrid1.Cells[1,0]:='商品名';
 StringGrid1.Cells[2,0]:='商品コード';</code></pre>
button1.Caption:='search';
button2.Caption:='select';
button3.Caption:='insert';
button4.Caption:='update';
button5.Caption:='detale';
button6.Caption:='maketable';

end;

MySQL57Connection1

can not load default Mysql library(“libmysqlclient.so18” or “libmysqlclient.so”).check your installation

で、エラーになり

MySQL80Connection1

で、行ったら、上手く行った

サンプルのデータベースは

CREATE TABLE m_product (
    product_id INT(11) NOT NULL AUTO_INCREMENT,
    p_name VARCHAR(20) NOT NULL,
    p_code VARCHAR(50) NOT NULL,
    create_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    update_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY ('product_id')
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;

ubuntu24.04にlazarusをインストール

公式ページより

ダウンロード

以下の4つをダウンロード
lazarus-project_3.4.0-0_amd64.deb
fpc-src_3.2.2-210709_amd64.deb
fpc-laz_3.2.2-210709_amd64.deb
README.txt

以下の3つをダウンロード
lazarus-project_3.4.0-0_amd64.deb
fpc-src_3.2.2-210709_amd64.deb
fpc-laz_3.2.2-210709_amd64.deb

cd
mkdir lazarus
cd lazarus

sudo dpkg -i lazarus-project_3.4.0-0_amd64.deb
sudo dpkg -i fpc-src_3.2.2-210709_amd64.deb
sudo dpkg -i fpc-laz_3.2.2-210709_amd64.deb

にて、インストール

startlazarus
で、起動

Could not find libgcc

のエラーがでていた。これがまずいよう

sudo apt-get install build-essential

これかな

依存でエラー

エラーメッセージに従い

apt –fix-broken install

再度

sudo apt –fix-broken install

インストールはできたよう

startlazarus
で、起動

上手くいったようです

procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.caption := ‘lazarus’;
end;

ボタンをクリックすると



ボタンの名前が変わった

上手く行った

Ubuntu 24.04 WineのWineWindowsプログラムローダーを設定

Ubuntu 24.04にWineをインストールしたが、exeファイルを、右クリックしても、起動ができない。

WineWindowsプログラムローダーを
インストールしてみた

ttps://www.sejuku.net/blog/84266
を、参考にして

sudo curl -o /usr/share/applications/wine.desktop https://raw.githubusercontent.com/wine-mirror/wine/5c2d6211f6590d3856dc9188593b3d3597c8b441/loader/wine.desktop

を、行った後に、リブートしたところ

WineWindowsプログラムローダーが
表示された




これにより、起動したいファイルを右クリックで、起動できるようにりました

Ubuntu 24.04で動画の文字起こし

ChatGPT o4 に、動画をアップロードして、文字起こしをしようとしたら

pythonで、行うようにと、ソースプログラムを表示してくれたのでやってみた

早速、Ubuntu 24.04のPCでやってみよう

まず、pythonなので、仮想空間を作る

python3 -V

Python 3.12.3

バージョンは 3.12.3

仮想空間を作るために

python3 -m venv voice

source voice/bin/activate
bash: voice/bin/activate: そのようなファイルやディレクトリはありません

メッセージをみたら、エラーを出していた

apt install python3.12-venv

インストールが必要

sudo apt install python3.12-venv

再度

python3 -m venv voice

source voice/bin/activate

こんどは、入れた

GPTが教えてくれた、コマンドで

pip install moviepy speechrecognition pydub
Collecting moviepy

で、必要なライブラリーをインストール

プログラムをmoji.pyで作っておいて

python3 moji.py

で、実行

エラーを表示、mp3は、だめで、wavとのこと

Audacityを使って、wavに変換

実行したら、時間がかかったが、画面に表示した

python3 moji.py > kekka.txt

で、ファイルに落ちた

案外精度はよさそうである

プログラムは、以下となっている

import speech_recognition as sr

recognizer = sr.Recognizer()
audio = sr.AudioFile(“extracted_audio.wav”)

with audio as source:
recognizer.adjust_for_ambient_noise(source)
audio_data = recognizer.record(source)

try:
text = recognizer.recognize_google(audio_data, language=’ja-JP’)
print(text)
except sr.UnknownValueError:
print(“音声が不明瞭で理解できませんでした。”)
except sr.RequestError as e:
print(f”リクエストに失敗しました; {e}”)

活用していってみよう

Ununtu24.04で、スタバのWifiに接続

スタバのwifiに接続しようとしたらなかなか接続ができなかった

あらかじめ、ブラウザ(Chrome)を、立ち上げてから

ネットの接続を切り替え、画面上部に接続のメッセージを

クリックしたところ、接続確認の画面になった

ubuntu 24.04にHeidSQLをインストール

exeをダウンロード

ttps://forest.watch.impress.co.jp/library/software/heidisql/

から、



HeidiSQL_12.8.0.6908_Setup.exe

端末

から、wineをインストール

$ sudo apt install wine

$wine –version

wine-9.0 (Ubuntu 9.0~repack-4build3)

$wine HeidiSQL_12.8.0.6908_Setup.exe



指示に従い apt-get install wine32:i386



rootでないといけないのかな?

$sudo apt-get install wine32:i386

やはり上手くいかない

sudo apt-get install wine32

以下のパッケージには満たせない依存関係があります:
libgphoto2-6t64:i386 : 依存: libgd3:i386 (>= 2.1.0~alpha~) しかし、インストールされようとしていません

ttps://www.ohsan.info/2017/08/blog-post_21.html

ttps://qiita.com/nanbuwks/items/a18dd35ad83ab70879b4

を、参考にして

$sudo apt install –install-recommends libgd3:i386

$sudo apt-get install wine32

無事通過

$wine HeidiSQL_12.8.0.6908_Setup.exe

エラー

wine: could not load kernel32.dll, status c0000135

ttps://frees.jp/2023/04/10/wine-could-not-load-kernel32-dll-status-c0000135%E3%80%80%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B/#google_vignette

より

$rm -rf ~/.wine

$wine HeidiSQL_12.8.0.6908_Setup.exe

一応、Wineのフォルダーに、複写して、そこで起動

にて、起動できた








文字化けするが、想像力で進んで行く

インストールできたので

起動してみると、やはり文字化け

対策しないと行けない

ttps://symfoware.blog.fc2.com/blog-entry-2228.html

$ sudo apt install -y winetricks
$ winetricks

で、対策できそう

再度実行したが、やはり、豆腐のまま

一応、電源を切って、再鼓動したら、文字化け解消

HeidiSQLも起動できた

Ubuntu 24.04 テキストエディタの文字入力が繰り返してしまう

Ubuntu 24.04の

標準のテキストエディタで、漢字変換した内容が残ってしまう

画面表示をX-Windowに切り替えたためなのか

対策がわからず、当面、別のエディタを使うことにした

現象は、変換した文字が残ってします

こんな感じです

不具合のある標準のエディタは

The GNOME Project

との事





他の、エディアがないか調べたら

gedit

が、あったので、アプリケーションセンターから

インストールしたら、今度は、文字変換が上手く行った