散分 散分Ing 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Delphi 基础类 (未解决问题)[抽样数据]? 有两个窗口,请问如何实现拖动其中一个窗口,另外那个窗口的也跟着移动? (smallsnig ) 50 0 01-22 21: 28 管理 ... 共29贴 ...? 各位在软件公司工作的朋友每天能抽出多长时间看书学习? (zxfsdbj ) 20 58 01-22 20: 06 管理 [统计结果]合计分数: 2024.00 (分); 合计回复: 395.00 (次); 合计时差: 82.00 (分钟)平均分数: 69.79(分/贴); 平均回复: 13.62(次/贴); 平均时差: 2.83(分钟/贴)//--------------------------------------------------------------- //发一段代码不就与技术有关了!~~这样就不会被转移~~//嘿嘿~~(*//标题:CSDN人气统计说明:统计抽样帖子中分数、回复、时间差的情况 设计:Zswang支持:[email protected]日期:2002-07-06//*)unit TopicUnit;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TFormTopic = class(TForm) MemoData: TMemo; ButtonCalc: TButton; MemoReport: TMemo; EditTitle: TEdit; procedure FormCreate(Sender: TObject); procedure ButtonCalcClick(Sender: TObject); private { Private declarations } public { Public declarations } end;var FormTopic: TFormTopic;implementation{$R *.dfm}{$IFDEF VER140}uses StrUtils, DateUtils;{$ELSE}function ReverseString(const AText: string): string;var I: Integer;begin Result := ''; for I := Length(AText) downto 1 do Result := Result + AText[I];end;function SpanOfNowAndThen(const ANow, AThen: TDateTime): TDateTime;begin if ANow < AThen then Result := AThen - ANow else Result := ANow - AThen;end;function MinuteSpan(const ANow, AThen: TDateTime): Double;begin Result := 24 * 60 * SpanOfNowAndThen(ANow, AThen);end;function StrToDateTimeDef(const S: string; const Default: TDateTime): TDateTime;begin try Result := StrToDateTime(S); except Result := Default; end;end;{$ENDIF}function Calc(mStrings: TStrings; var nMark, nRevert, nTimeSpan: Real): Boolean;const cYear = '2002';var I, J: Integer; S: string; vMaxTime: TDateTime; vMinTime: TDateTime; vMark, vRevert: Integer; vDateTime: TDateTime;begin Result := False; if not Assigned(mStrings) then Exit; ///////Begin 清除相同的数据 for I := mStrings.Count - 1 downto 0 do if mStrings.IndexOf(mStrings[I]) <> I then mStrings.Delete(I); ///////End 清除相同的数据 ///////Begin 初始化变量 nMark := 0; nRevert := 0; nTimeSpan := 0; vMaxTime := 0; vMinTime := 0; ///////End 初始化变量 for I := 0 to mStrings.Count - 1 do begin S := ReverseString(Trim(mStrings[I])); ///////Begin 处理时间部分 Delete(S, 1, 5); Delete(S, 3, 1); vDateTime := StrToDateTimeDef(cYear + '-' + ReverseString(Copy(S, 1, 11)), 0); if vMaxTime = 0 then vMaxTime := vDateTime else if vDateTime > vMaxTime then vMaxTime := vDateTime; if vMinTime = 0 then vMinTime := vDateTime else if vDateTime < vMinTime then vMinTime := vDateTime; Delete(S, 1, 12); ///////End 处理时间部分 ///////Begin 处理回复部分 J := Pos(' ', S) - 1; vRevert := StrToIntDef(ReverseString(Copy(S, 1, J)), 0); Delete(S, 1, J + 1); ///////End 处理回复部分 ///////Begin 处理分数部分 J := Pos(' ', S) - 1; vMark := StrToIntDef(ReverseString(Copy(S, 1, J)), 0); ///////End 处理分数部分 nMark := nMark + vMark; nRevert := nRevert + vRevert; end; nTimeSpan := Int(MinuteSpan(vMaxTime, vMinTime) + 0.5); //计算时间差 Result := True;end;procedure TFormTopic.FormCreate(Sender: TObject);begin Font.Name := '宋体'; Font.Size := 9; Caption := '人气统计'; ButtonCalc.Caption := '统计(&C)'; MemoData.WordWrap := False; MemoReport.WordWrap := False; MemoData.Clear; EditTitle.Clear; MemoReport.Clear;end;procedure TFormTopic.ButtonCalcClick(Sender: TObject);var vMark, vRevert, vTimeSpan: Real; vCount: Integer; I: Integer; vStringList: TStringList;begin vCount := MemoData.Lines.Count; if vCount <= 0 then Exit; vStringList := TStringList.Create; try ///////Begin 处理全拷贝的情况 vStringList.Assign(MemoData.Lines); for I := vCount - 1 downto 0 do if (Pos('版主:', Trim(vStringList[I])) = 1) and (I > 0) then begin EditTitle.Text := Trim(vStringList[I - 1]); vStringList.Delete(I); end else if (Pos( '?', Trim(vStringList[I])) = 1) or (Pos( '√', Trim(vStringList[I])) = 1) then else vStringList.Delete(I); ///////End 处理全拷贝的情况 Calc(vStringList, vMark, vRevert, vTimeSpan); vCount := vStringList.Count; MemoReport.Lines.Add(EditTitle.Text); MemoReport.Lines.Add('[抽样数据]'); MemoReport.Lines.Add(vStringList[0]); MemoReport.Lines.Add(Format('... 共%d贴 ...', [vCount])); MemoReport.Lines.Add(vStringList[vStringList.Count - 1]); MemoReport.Lines.Add(''); MemoReport.Lines.Add('[统计结果]'); MemoReport.Lines.Add(Format( '合计分数: %7.2f (分); 合计回复: %7.2f (次); 合计时差: %7.2f (分钟)', [vMark, vRevert, vTimeSpan])); MemoReport.Lines.Add(Format( '平均分数: %7.2f(分/贴); 平均回复: %7.2f(次/贴); 平均时差: %7.2f(分钟/贴)', [vMark / vCount, vRevert / vCount, vTimeSpan / vCount])); MemoReport.Lines.Add('//---------------------------------------------------------------'); finally vStringList.Free; end;end;end. to ihihonline (小小->简单些再简单些,平淡些再平淡些) 这阵子你到哪里去了,大家都好想你啊!所以,你的分我全收下了:) 谁有 陈宽达的<delphi深度历险>这本书的源码 如何標識主窗體 请问D7中的TCPClientSocket,TCPServerSocket如何使用 DBListBox可以直接显示出数据吗,象DBGrid一样 try...finally..语句有什么用,那些地方最好么用这一类语句的? 还是刚才那个关于TADOTable问题,但是略有不同. 【求助】泡泡游戏双开工具 怎样设置dxDBGrid的记录的颜色????? 一个本人不会的简单问题 一个数据集刷新(refresh)的问题 指针问题 inner join后的ON 是什么意思,AND 又是什么意思一个INNER JOIN后可以跟多少个ON
[抽样数据]
? 有两个窗口,请问如何实现拖动其中一个窗口,另外那个窗口的也跟着移动? (smallsnig ) 50 0 01-22 21: 28 管理
... 共29贴 ...
? 各位在软件公司工作的朋友每天能抽出多长时间看书学习? (zxfsdbj ) 20 58 01-22 20: 06 管理 [统计结果]
合计分数: 2024.00 (分); 合计回复: 395.00 (次); 合计时差: 82.00 (分钟)
平均分数: 69.79(分/贴); 平均回复: 13.62(次/贴); 平均时差: 2.83(分钟/贴)
//---------------------------------------------------------------
//嘿嘿~~(*//
标题:CSDN人气统计
说明:统计抽样帖子中分数、回复、时间差的情况
设计:Zswang
支持:[email protected]
日期:2002-07-06
//*)unit TopicUnit;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TFormTopic = class(TForm)
MemoData: TMemo;
ButtonCalc: TButton;
MemoReport: TMemo;
EditTitle: TEdit;
procedure FormCreate(Sender: TObject);
procedure ButtonCalcClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
FormTopic: TFormTopic;implementation{$R *.dfm}{$IFDEF VER140}
uses StrUtils, DateUtils;
{$ELSE}
function ReverseString(const AText: string): string;
var
I: Integer;
begin
Result := '';
for I := Length(AText) downto 1 do
Result := Result + AText[I];
end;function SpanOfNowAndThen(const ANow, AThen: TDateTime): TDateTime;
begin
if ANow < AThen then
Result := AThen - ANow
else
Result := ANow - AThen;
end;function MinuteSpan(const ANow, AThen: TDateTime): Double;
begin
Result := 24 * 60 * SpanOfNowAndThen(ANow, AThen);
end;function StrToDateTimeDef(const S: string; const Default: TDateTime): TDateTime;
begin
try
Result := StrToDateTime(S);
except
Result := Default;
end;
end;
{$ENDIF}function Calc(mStrings: TStrings; var nMark, nRevert, nTimeSpan: Real): Boolean;
const
cYear = '2002';
var
I, J: Integer;
S: string;
vMaxTime: TDateTime;
vMinTime: TDateTime;
vMark, vRevert: Integer;
vDateTime: TDateTime;
begin
Result := False;
if not Assigned(mStrings) then Exit;
///////Begin 清除相同的数据
for I := mStrings.Count - 1 downto 0 do
if mStrings.IndexOf(mStrings[I]) <> I then
mStrings.Delete(I);
///////End 清除相同的数据
///////Begin 初始化变量
nMark := 0;
nRevert := 0;
nTimeSpan := 0;
vMaxTime := 0;
vMinTime := 0;
///////End 初始化变量
for I := 0 to mStrings.Count - 1 do begin
S := ReverseString(Trim(mStrings[I]));
///////Begin 处理时间部分
Delete(S, 1, 5);
Delete(S, 3, 1);
vDateTime := StrToDateTimeDef(cYear + '-' +
ReverseString(Copy(S, 1, 11)), 0);
if vMaxTime = 0 then
vMaxTime := vDateTime
else if vDateTime > vMaxTime then
vMaxTime := vDateTime;
if vMinTime = 0 then
vMinTime := vDateTime
else if vDateTime < vMinTime then
vMinTime := vDateTime;
Delete(S, 1, 12);
///////End 处理时间部分
///////Begin 处理回复部分
J := Pos(' ', S) - 1;
vRevert := StrToIntDef(ReverseString(Copy(S, 1, J)), 0);
Delete(S, 1, J + 1);
///////End 处理回复部分
///////Begin 处理分数部分
J := Pos(' ', S) - 1;
vMark := StrToIntDef(ReverseString(Copy(S, 1, J)), 0);
///////End 处理分数部分
nMark := nMark + vMark;
nRevert := nRevert + vRevert;
end;
nTimeSpan := Int(MinuteSpan(vMaxTime, vMinTime) + 0.5); //计算时间差
Result := True;
end;procedure TFormTopic.FormCreate(Sender: TObject);
begin
Font.Name := '宋体';
Font.Size := 9;
Caption := '人气统计';
ButtonCalc.Caption := '统计(&C)';
MemoData.WordWrap := False;
MemoReport.WordWrap := False;
MemoData.Clear;
EditTitle.Clear;
MemoReport.Clear;
end;procedure TFormTopic.ButtonCalcClick(Sender: TObject);
var
vMark, vRevert, vTimeSpan: Real;
vCount: Integer;
I: Integer;
vStringList: TStringList;
begin
vCount := MemoData.Lines.Count;
if vCount <= 0 then Exit;
vStringList := TStringList.Create;
try
///////Begin 处理全拷贝的情况
vStringList.Assign(MemoData.Lines);
for I := vCount - 1 downto 0 do
if (Pos('版主:', Trim(vStringList[I])) = 1) and (I > 0) then begin
EditTitle.Text := Trim(vStringList[I - 1]);
vStringList.Delete(I);
end else if (Pos( '?', Trim(vStringList[I])) = 1) or
(Pos( '√', Trim(vStringList[I])) = 1) then
else vStringList.Delete(I);
///////End 处理全拷贝的情况
Calc(vStringList, vMark, vRevert, vTimeSpan);
vCount := vStringList.Count;
MemoReport.Lines.Add(EditTitle.Text);
MemoReport.Lines.Add('[抽样数据]');
MemoReport.Lines.Add(vStringList[0]);
MemoReport.Lines.Add(Format('... 共%d贴 ...', [vCount]));
MemoReport.Lines.Add(vStringList[vStringList.Count - 1]);
MemoReport.Lines.Add('');
MemoReport.Lines.Add('[统计结果]');
MemoReport.Lines.Add(Format(
'合计分数: %7.2f (分); 合计回复: %7.2f (次); 合计时差: %7.2f (分钟)',
[vMark, vRevert, vTimeSpan]));
MemoReport.Lines.Add(Format(
'平均分数: %7.2f(分/贴); 平均回复: %7.2f(次/贴); 平均时差: %7.2f(分钟/贴)',
[vMark / vCount, vRevert / vCount, vTimeSpan / vCount]));
MemoReport.Lines.Add(
'//---------------------------------------------------------------');
finally
vStringList.Free;
end;
end;end.
这阵子你到哪里去了,大家都好想你啊!
所以,你的分我全收下了:)