文本文件数据读取?(100分)

  • 主题发起人 主题发起人 lzw
  • 开始时间 开始时间
L

lzw

Unregistered / Unconfirmed
GUEST, unregistred user!
以下格式的文本文件,带“:”的为时间值,其他为实数或整数,如何读取?
我用read和readln,定义数组,无法实现啊?
12.1 0.95 30 5
1 0:00 9:30 22:00 23:59
2 12:00 17:30 21:00 23:59
2 9:30 12:00 17:30 21:00
1 0:00 9:00 22:00 23:59
2 12:00 17:00 21:00 23:59
2 9:00 12:00 17:00 21:00
 
数组当然不行了,先按行读到字符窜中,然后进行字符窜分割
 
同意楼上,按空格分隔,应该不难
 
用TStringlist
不知道这样取出来的数据符不符合你的需求
var
sl, slt: Tstringlist;
i, j: integer;
begin
Self.Memo1.Clear;
if sELF.OpenDialog1.Execute then
begin
try
sl := Tstringlist.Create;
slt := Tstringlist.Create;
sl.LoadFromFile(Self.OpenDialog1.FileName);
for i := 0 to sl.Count - 1 do
begin
SLT.Delimiter := ' ';
SLT.DelimitedText := SL.Strings;
for J := 0 to SLT.Count - 1 do
begin
sELF.Memo1.Lines.Add(SLT.Strings[j]);
end;
end;
finally
slt.Free;
sl.Free;
end;
end;
end;
 
谢谢各位,用stringlist解决,效果还不错。再请教下:使用StrToTime(Mystring,FormatSettings)转换为时间格式,并控制为24小时制。第2个参数FormatSettings应该怎么写?我用'HH:mm'或LongTimeformat均不正确。
 
FormatDatetime('hh:nn:ss',time)
 
to lidechina:
你写的是单独应用吧?我想知道在strtotime中如何应用第2个参数?谢谢
 
function StrToTime(const S: string): TDateTime;
//只有一个参数const S: string,如:'2006-12-04 14:38:38'
 
Delphi 7:

Delphi syntax:

function StrToTime(const S: string): TDateTime
overload;
function StrToTime(const S: string
const FormatSettings: TFormatSettings): TDateTime
overload;
 
找到一个示例,可以用,只是不明白为什么只指定FormatSettings.ShortTimeFormat := 'hh:mm';,就不能利用该函数。

function IsBetween(sDate1, sDate2, sDate3: string): boolean;
var
FormatSettings: TFormatSettings;
Date1, Date2, Date3: TDateTime;
begin
GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, FormatSettings);
FormatSettings.DateSeparator := '/';
FormatSettings.TimeSeparator := ':';
// Assuming this is the right format
FormatSettings.ShortDateFormat := 'yyyy/mm/dd hh:nn:ss';
FormatSettings.ShortTimeFormat := 'hh:mm';
Date1 := StrToDateTime(sDate1, FormatSettings);
Date2 := StrToDateTime(sDate2, FormatSettings);
// Assuming Date3 is the same date of Date1
Date3 := DateOf(Date1) + StrToTime(sDate3, FormatSettings);
result := (Date3 >= Date1) and (Date3 <= Date2);
end;
 
哦,我用的是D6
 
多人接受答案了。
 
后退
顶部