当我必须从actions表中删除记录时,出现数据库锁定错误。
有两个程序可以在 sqlite3 数据库上读写
一个是将硬件操作的结果写入sqlite3表上的ac程序,另一个是从sqlite读取记录并处理它们并在完成作业后删除行的python脚本。
但是python脚本database is locked在删除行时显示错误..
数据库名称: db.db
数据库表:
TABLE 'actions' (
'rid' INTEGER PRIMARY KEY AUTOINCREMENT,
'owner' INTEGER,
'action' TEXT,
'node' TEXT,
'value' TEXT
蟒蛇脚本:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sqlite3
import time
import os.path
import requests
#import urllib.parse
#defines
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
db_path = os.path.join(BASE_DIR+"/dbs/", "db.db")
wd_file_path = os.path.join(BASE_DIR, "wd")
pid = os.getpid()
conn = sqlite3.connect(db_path, isolation_level=None ,timeout=30000)
print ("Opened database successfully");
while True:
res = conn.execute("select * from …Run Code Online (Sandbox Code Playgroud) 我有rad studio xe5我使用indy EncodeString来编码输入字符串...
我的代码是这样的:
procedure TForm5.Button2Click(Sender: TObject);
var
UTF8: UTF8String;
begin
UTF8 := UTF8Encode(m1.Text);
m2.Text := ind.EncodeString(UTF8);
end;
Run Code Online (Sandbox Code Playgroud)
但utf-8输入的输出是错误的
orange --> b3Jhbmdl [correct]
book --> Ym9vaw== [correct]
???? --> Pz8/Pw== [wrong]
???? --> Pz8/Pw== [wrong]
???? --> Pz8/Pw== [wrong]
Run Code Online (Sandbox Code Playgroud)
对于所有输入的utf-8,它返回同样的输出!!! 我的代码有什么问题,我怎么能用utf-8字符串获得base64编码的好结果
我的代码正在运行for循环来处理一些数据,如下所示
procedure printValue(Value: Integer);
begin
TThread.Synchronize(TThread.Current, procedure
begin
form1.memo1.lines.add( Value.ToString );
end);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
myThread : TThread;
Proc1: TMyProc;
begin
for I := 0 to 10 do
begin
myThread := TThread.CreateAnonymousThread(
procedure
begin
printValue( i );
end);
myThread.Start;
end;
end;
Run Code Online (Sandbox Code Playgroud)
输出的代码是这样的:
3
5
6
8
9
11
10
4
11
4
7
Run Code Online (Sandbox Code Playgroud)
这不好,所以我sleep(1)在线程启动后添加了一个小的延迟。这将解决输出问题,但不是一个好主意,因为在大循环中会阻塞ui线程,因此请尝试使用此文档作为帮助,这样我的代码就会这样更改:
function CaptureValue(Value: Integer): TMyProc;
begin
Result := procedure begin Writeln(Value); end;
end;
procedure printValue(Value: Integer);
begin
TThread.Synchronize(TThread.Current, procedure …Run Code Online (Sandbox Code Playgroud) 我在表单上使用此代码在OnShow事件中创建了一个元素:
procedure TForm4.FormShow(Sender: TObject);
var
VertScrollLink:TVertScrollBox;
begin
VertScrollLink := TVertScrollBox.Create(form4);
VertScrollLink.Align := TAlignLayout.Client;
VertScrollLink.Parent := form4;
end;
Run Code Online (Sandbox Code Playgroud)
在某些操作上,我需要动态删除布局:
for LIndex := form4.ComponentCount-1 downto 0 do
begin
if (form4.Components[LIndex].ToString='TVertScrollBox') then
begin
//showmessage(form4.Components[LIndex].ToString);
form4.Components[LIndex].Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
此代码在Windows上运行良好,但不会删除Android上的任何内容.
delphi firemonkey delphi-xe7 delphi-10-seattle delphi-10.1-berlin
Delphi TTrackBar 有两个事件用于跟踪更改:
变化时
追踪中
但他们俩都做同样的事情。例如:
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
ShowMessage(TrackBar1.Value.ToString);
end;
Run Code Online (Sandbox Code Playgroud)
任何小的变化都会显示10消息。
如何检测手机上的最后更改?所有跟踪之后都必须发生更改吗?
我有一个从进程填充的TMemory流,我需要实时读取它的其他部分。当我使用此代码时:
for i := 0 to j do
begin
FOutputStream.position:=i * 194
stream4.CopyFrom(FOutputStream, 194 );
end;
Run Code Online (Sandbox Code Playgroud)
它返回错误的数据,因为编写器进程更改了位置。所以我决定使用Memory属性
stream4.CopyFrom( PByte(FOutputStream.Memory)[ i * 194 ] , 194) );
Run Code Online (Sandbox Code Playgroud)
但是我得到这个错误
[DCC错误] Unit1.pas(640):E2010不兼容的类型:'TStream'和'Byte'
我该如何处理此错误?
我必须像这样将十六进制字符串转换为二进制字符串
"F" -> "?1111?"
"A" -> "?1010?"
"1AF1" -> "1101011110001"
Run Code Online (Sandbox Code Playgroud)
我有这个功能:
function HexToBin(Hexadecimal: string): string;
const
BCD: array [0..15] of string =
('0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111',
'1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111');
var
i: integer;
begin
Result := '';
for i := Length(Hexadecimal) downto 1 do
Result := BCD[StrToInt('$' + Hexadecimal[i])] + Result;
end;
Run Code Online (Sandbox Code Playgroud)
我这样称呼它:
for I := 0 to Trunc(tcpFrame.Length/100) do
begin
str := copy(tcpFrame , (I*100)+1 , 100 );
data := data …Run Code Online (Sandbox Code Playgroud)