2024年8月29日 星期四
2024年8月26日 星期一
2024年8月12日 星期一
Suno 創作 歌曲名稱: 美國没欠你
大綱:
美國沒欠你. 只是想當老大. 偉大理想無可厚非. 但是要承受 圍攻的風險. 其實你最危險的朋友 不是金小胖 就是 普丁. 眼睛放亮點. 美國真的沒欠你. 他只是想當老大罷了. 如果能自我反省. 極權改為 自由民主. 老大換人當. 也許不是夢
音樂調性
120bps, 抒情搖滾. F 調 , 男女對唱
產生的歌詞:
Verse]
美國没欠你
只是想當老大
伟大理想無可厚非
但要承受风险
[Verse 2]
最危險的朋友
不是金小胖
就是普丁啊
眼睛放亮点
[Chorus]
美國真的没欠你
他只是想當老大罢了
如果能自我反省
自由民主取代極權
[Bridge]
老大换人当
也不是梦
世界更美好
一起來追求
[Chorus]
美國真的没欠你
他只是想當老大罢了
如果能自我反省
自由民主取代極權
[Outro]
未来不是梦
一起來追求
自由民主啊
大家一起努力
歌曲名稱: 美國没欠你
歌詞修飾
[Verse]
美国没欠你
他只是想当老大
伟大理想无可厚非
但要承受排山倒海的压力.
[Verse 2]
圆梨危险的朋友
他们心怀不轨
金小胖, 普丁, 我说的就是你!!
眼睛放亮点
[Chorus]
美国真的没欠你
他只是想当老大罢了
如果能自我反省
自由民主取代极权 就有机会啦...
[Bridge]
老大换人当
也不是梦
世界更美好
一起来追求
[Chorus]
美国真的没欠你
他只是想当老大罢了
如果能自我反省
自由民主取代极权
也许真的有机会.
[Outro]
未来不是梦
一起来追求
自由民主啊
大家一起努力
style
120bps, 柔和電音. C 調 , 男音
Style modification:
Electric Violin, Modern Violin, Electric Dance Music, Dubstep, Adult Female Voice, Ambient noise
2024年8月4日 星期日
2024年7月28日 星期日
在 Delphi 中,指针(Pointer)是一种非常强大的工具
在 Delphi 中,指针(Pointer)是一种非常强大的工具,可以直接操作内存地址。这些指针主要用于需要高效或特定内存操作的场景。以下是一些常见的指针使用示例,包括基本用法、动态内存分配以及数组和记录的操作。
### 基本指针用法
```delphi
procedure BasicPointerExample;
var
Ptr: ^Integer;
Value: Integer;
begin
Value := 42;
Ptr := @Value; // 获取变量 Value 的地址
ShowMessage(IntToStr(Ptr^)); // 显示 Ptr 指向的值,即 42
end;
```
### 动态内存分配
```delphi
procedure DynamicMemoryAllocationExample;
var
Ptr: ^Integer;
begin
// 动态分配内存
New(Ptr);
Ptr^ := 42; // 设置 Ptr 指向的内存的值
ShowMessage(IntToStr(Ptr^)); // 显示 Ptr 指向的值,即 42
Dispose(Ptr); // 释放内存
end;
```
### 操作数组
```delphi
procedure ArrayPointerExample;
var
Arr: array[1..5] of Integer;
Ptr: ^Integer;
I: Integer;
begin
// 初始化数组
for I := 1 to 5 do
Arr[I] := I * 10;
// 获取数组的指针
Ptr := @Arr[1];
// 通过指针访问数组
for I := 0 to 4 do
ShowMessage(IntToStr((Ptr + I)^)); // 显示 10, 20, 30, 40, 50
end;
```
### 操作记录
```delphi
type
TMyRecord = record
Age: Integer;
Name: string;
end;
PMyRecord = ^TMyRecord;
procedure RecordPointerExample;
var
Rec: TMyRecord;
Ptr: PMyRecord;
begin
Rec.Age := 30;
Rec.Name := 'John Doe';
Ptr := @Rec; // 获取记录的指针
ShowMessage(IntToStr(Ptr^.Age)); // 显示 30
ShowMessage(Ptr^.Name); // 显示 John Doe
end;
```
### 使用 `GetMem` 和 `FreeMem` 分配和释放内存
```delphi
procedure GetMemFreeMemExample;
var
Ptr: Pointer;
Value: Integer;
begin
// 分配内存
GetMem(Ptr, SizeOf(Integer));
Integer(Ptr^) := 42; // 设置 Ptr 指向的内存的值
Value := Integer(Ptr^);
ShowMessage(IntToStr(Value)); // 显示 42
// 释放内存
FreeMem(Ptr);
end;
```
### 字符串操作
```delphi
procedure StringPointerExample;
var
Str: string;
Ptr: PChar;
begin
Str := 'Hello, Delphi!';
Ptr := PChar(Str); // 获取字符串的指针
while Ptr^ <> #0 do
begin
ShowMessage(Ptr^); // 显示每个字符
Inc(Ptr); // 移动到下一个字符
end;
end;
```
以上示例展示了如何在 Delphi 中使用指针来操作不同类型的数据。使用指针时需特别注意内存管理,以避免内存泄漏或访问无效内存。
Delphi 中,有一些低级别的内存操作指令可以直接操作内存
在 Delphi 中,有一些低级别的内存操作指令可以直接操作内存。这些指令通常用于需要高性能或特定内存操作的场景。除了 `Move` 之外,常用的低级别内存操作指令还有:
1. **FillChar**
2. **ZeroMemory**
3. **CopyMemory**
4. **FreeMemory**
5. **GetMemory**
6. **ReallocMemory**
### 详细介绍
1. **FillChar**
用于将内存块填充为指定的字符。
```delphi
procedure FillChar(var X; Count: Integer; Value: Char);
```
示例:
```delphi
var
Buffer: array[0..9] of Char;
begin
FillChar(Buffer, SizeOf(Buffer), 'A');
end;
```
2. **ZeroMemory**
用于将内存块填充为零。这个函数通常作为 FillChar 的变种使用。
```delphi
procedure ZeroMemory(Destination: Pointer; Length: SIZE_T); stdcall;
```
示例:
```delphi
var
Buffer: array[0..9] of Byte;
begin
ZeroMemory(@Buffer, SizeOf(Buffer));
end;
```
3. **CopyMemory**
用于从一个内存块复制到另一个内存块。这通常作为 Move 的变种使用。
```delphi
procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: SIZE_T); stdcall;
```
示例:
```delphi
var
Source, Destination: array[0..9] of Byte;
begin
CopyMemory(@Destination, @Source, SizeOf(Source));
end;
```
4. **FreeMemory**
用于释放内存块。
```delphi
procedure FreeMemory(P: Pointer);
```
示例:
```delphi
var
Ptr: Pointer;
begin
Ptr := GetMemory(100);
// 使用 Ptr
FreeMemory(Ptr);
end;
```
5. **GetMemory**
用于分配内存块。
```delphi
function GetMemory(Size: Integer): Pointer;
```
示例:
```delphi
var
Ptr: Pointer;
begin
Ptr := GetMemory(100);
// 使用 Ptr
FreeMemory(Ptr);
end;
```
6. **ReallocMemory**
用于重新分配内存块。
```delphi
function ReallocMemory(P: Pointer; Size: Integer): Pointer;
```
示例:
```delphi
var
Ptr: Pointer;
begin
Ptr := GetMemory(100);
Ptr := ReallocMemory(Ptr, 200);
// 使用 Ptr
FreeMemory(Ptr);
end;
```
这些低级别内存操作指令提供了对内存的直接控制,但使用时需要特别小心,以避免内存泄漏或内存访问错误。
2024年7月12日 星期五
// 使用 System.Move 进行快速数组复制 array
program ArrayCopyExample;
{$APPTYPE CONSOLE}
uses
SysUtils;
procedure CopyArray(const Source: array of Integer; var Dest: array of Integer);
begin
if Length(Dest) <> Length(Source) then
raise Exception.Create('Destination array must be the same length as the source array.');
// 使用 System.Move 进行快速数组复制
System.Move(Source[0], Dest[0], Length(Source) * SizeOf(Integer));
end;
var
SourceArray, DestArray: array of Integer;
i: Integer;
begin
// 初始化源数组
SetLength(SourceArray, 5);
for i := 0 to Length(SourceArray) - 1 do
SourceArray[i] := i + 1;
// 初始化目标数组
SetLength(DestArray, Length(SourceArray));
// 复制数组
CopyArray(SourceArray, DestArray);
// 输出结果
for i := 0 to Length(DestArray) - 1 do
WriteLn('DestArray[', i, '] = ', DestArray[i]);
ReadLn;
end.
-
解答來自於 Grok 2 Q: MTF 50 & MTF 30 的計算方式. 如果知道 一張 1080p 的照片 黑白 由 10% ~90% 需要1.5 個pixel. 這樣 MTF50 & MTF30 推算是多少? A: MTF (Modulation Tra...
-
FI MODE DEALER MODE (FI MODE code ) BLACK W/ GREEN BAND Wire with a WHITE STRIPE and a WHITE W/ GREEN BAND Wire with a RED STRIPE 黑底白細條 白底紅細...
-
參考來源 🟥台北 文山指南宮 常務董事: 黃承國 (天道盟文山會會長)( 民主進步黨 籍) 木柵聖母宮 主委: 黃承國 (天道盟文山會會長) 中山瑤山宮 天道盟總壇,主委都是天道盟老大 北投磺田福佑宮 主委: 林瑞圖 (詐貸、黑道議員) 松山振勝堂 竹聯幫靜安...