我有两个过程,一个ParseRecord,用来将sRecord解析为一个个字段,然后将其存入TStringList中
另一个过程GenerateSQL,接受TStringList类型的参数,即前面解析后的字段.
我现在的问题是,如果将ParseRecord过程的GenerateSQL注释掉,解析出来的字段是正确的,
但如果加上GenerateSQL过程,有些字段解析出来是乱码了..想问各位大虾,我在GenerateSQL过程中对TStringList的操作,会改变原来的实参吗?如果会,我应该怎么做?procedure ParseRecord(const sRecord: String);
var
slFields: TStringList;
begin
.....
GenerateSQL(slFields);
end;procedure GenerateSQL(const slFields: TStringList);
var
//iFileHandle: Integer;
//iBytesWrite: Integer;
buffer: String;
index: Integer;
begin
buffer := '';
for index := 0 to slFields.Count-2 do
buffer := buffer + sTemp + ',';
buffer := buffer + slFields[slFields.Count-1]; buffer := Format(FmtString, [buffer]);
end;
另一个过程GenerateSQL,接受TStringList类型的参数,即前面解析后的字段.
我现在的问题是,如果将ParseRecord过程的GenerateSQL注释掉,解析出来的字段是正确的,
但如果加上GenerateSQL过程,有些字段解析出来是乱码了..想问各位大虾,我在GenerateSQL过程中对TStringList的操作,会改变原来的实参吗?如果会,我应该怎么做?procedure ParseRecord(const sRecord: String);
var
slFields: TStringList;
begin
.....
GenerateSQL(slFields);
end;procedure GenerateSQL(const slFields: TStringList);
var
//iFileHandle: Integer;
//iBytesWrite: Integer;
buffer: String;
index: Integer;
begin
buffer := '';
for index := 0 to slFields.Count-2 do
buffer := buffer + sTemp + ',';
buffer := buffer + slFields[slFields.Count-1]; buffer := Format(FmtString, [buffer]);
end;
解决方案 »
- 请哪位高手知道:怎样为不规则窗口描边?
- TCLientDateSet接收数据集不完整
- 用UDL连接SQL数据库出现“无效的授权说明”...
- 問一個關於 Object Pascal 的簡單的語法問題, 急啊! 在顯等待!!!! ()
- FastReport SQL结果值与报表显示值不一致?
- 高手来看看 代码能编译 但是不起作用 什么回事????
- 难道这里没人知道吗?
- DELPHI学网络编程要看什么书啊,写书详细书名,谢谢拉帮忙推荐几本啊
- 关于radiogroup一问
- 菜鳥發問:DELPHI中如何使用API函數
- .Dll中的一个问题
- ERP,CRM开发整体源代码(VB.net+SQLSERVER),有演示
var
//iFileHandle: Integer;
//iBytesWrite: Integer;
buffer: String;
index: Integer;
begin
buffer := slFields.commatext; buffer := Format(FmtString, [buffer]);
end;
-------------------
看你怎么操作了,读不会,写会。
var
//iFileHandle: Integer;
iBytesWrite: Integer;
buffer: String;
index: Integer;
sTemp : String;
begin
{$ifdef _THE_DEBUG_SQL}
Writeln('Generating SQL <' + SQLFileName + '>...');
{$endif} buffer := slFields.CommaText; //slFields.CommaText = s
(*
buffer := '';
for index := 0 to slFields.Count-2 do
begin
sTemp := slFields[index];
buffer := buffer + sTemp + ',';
end;
buffer := buffer + slFields[slFields.Count-1]; *) buffer := Format(FmtString, [buffer]); // 格式化成insert语句 {$ifdef _THE_DEBUG_SQL}
//for index := 0 to slFields.Count -1 do
// Writeln(slFields[index]);
Writeln(buffer);
{$endif} ...
end;上面的
{$ifdef _THE_DEBUG_SQL}
//for index := 0 to slFields.Count -1 do
// Writeln(slFields[index]);
Writeln(buffer);
{$endif}
不管是打印slFields还是buffer都有乱码出现
而在
procedure ParseRecord(const sRecord: String);
begin
...
{$ifdef _THE_DEBUG_RECORD}
for index := 0 to slFields.Count-1 do
Writeln(slFields[index]);
//Writeln(sField);
{$endif} GenerateSQL(slFields);
end;
如果没有GenerateSQL(slFields);打印出的字段是正确的,而加上GenerateSQL(slFields);打印出的字段也是有乱码的
var
//iFileHandle: Integer;
iBytesWrite: Integer;
buffer: String;
index: Integer;
sTemp : String;
begin
{$ifdef _THE_DEBUG_SQL}
Writeln('Generating SQL <' + SQLFileName + '>...');
{$endif} buffer := slFields.CommaText; buffer := Format(FmtString, [buffer]); // 格式化成insert语句 {$ifdef _THE_DEBUG_SQL}
//for index := 0 to slFields.Count -1 do
// Writeln(slFields[index]);
Writeln(buffer);
{$endif} ...
end;不必要的代码忘删了,对不起