Форум: "Начинающим";
Текущий архив: 2008.04.13;
Скачать: [xml.tar.bz2];
ВнизНе пишет первое слово Найти похожие ветки
← →
Tovarisch © (2008-03-18 20:49) [0]Вот такой вот код загоняет в массив из записей
type
Bylet = record
No:string[12];
Reys:string[12];
Data:string[12];
FIO:string
Файлик в котором слова через пробел.
Проблема в том что все No:string[12]; остаются пустыми.
И может заодно скажите как указатель в файле вернуть в начало или методы определения количества строк файла без ридлни счетчика)procedure TForm1.Button4Click(Sender: TObject);
begin
fname:=Label6.Caption+"\"+Edit6.Text;
AssignFile(f, fname);
Reset(f);
while not EOF(f) do
begin
I:=i+1;
readln(f,s);
end;
SetLength(rec,i);
I:=0;
CloseFile(f);
AssignFile(f, fname);
Reset(f);
while not EOF(f) do
begin
Readln(f,s);
for I := 0 to (length(s)) do
begin
if s[i]<>" " then
Begin
case j of
0:rec[k].No:=rec[k].No+s[i];
1:rec[k].Reys:=rec[k].Reys+s[i];
2:rec[k].Data:=rec[k].Data+s[i];
3:rec[k].FIO:=rec[k].FIO+s[i];
end
end
else J:=j+1;
end;
k:=k+1;
i:=0;
j:=0;
end;
← →
Palladin © (2008-03-18 20:51) [1]1.
type
Bylet = record
No:string[12];
Reys:string[12];
Data:string[12];
FIO:string
это не откомпилируется
2. тип f в студию
> И может заодно скажите как указатель в файле вернуть
seek + F1
можешь возвращать его куда угодно
← →
Tovarisch © (2008-03-18 21:10) [2]1. Компилируется же и работает как нада(конкретно оно)
2. Все как в школе
rec: array of Bylet;
buf: array[0..3] of string;
f: text;
fname,s,c:string;
i,j,k:integer;
← →
Плохиш © (2008-03-18 23:08) [3]
> Tovarisch © (18.03.08 21:10) [2]
Слово "отладчик" (по буржуински "debug") тебе знакомо?
← →
Игорь Шевченко © (2008-03-19 00:12) [4]Плохиш © (18.03.08 23:08) [3]
Из иерархии пользователей VAX/VMS
"knowledgeable
user
- uses RUNOFF with no trouble, and is beginning
to learn EVE
- uses SEARCH to search for fixed strings
- has figured out that RENAME will move
directories
- has learned that HELP usually help
- somebody has shown her how to write C programs
- watched somebody use /DEBUG once
- all UNIX expert looking for VMS make"
← →
antonn © (2008-03-19 00:21) [5]по моему, здесь Tfilestream/Tmemorystream было бы куда удобнее...
← →
Германн © (2008-03-19 00:29) [6]И в любом случае:
1. Требования Palladin © (18.03.08 20:51) [1] до сих пор не удовлетворены. А без этого предметное обсуждение не имеет смысла.
2. Надо твердо определиться. Либо ТП, либо Дельфи. Либо ShortString, либо AnsiString.
← →
Tovarisch © (2008-03-19 12:05) [7]А после поста палладина ето было что?
rec: array of Bylet;
buf: array[0..3] of string;
f: text;
fname,s,c:string;
i,j,k:integer;
Файлик текстовый(.txt) сохранен в анси
По дебагу он в rec[k].No запихивает до значения символ #0(#0"121")
В том то и дело не могу понять что ему мешает отобразить хотябы и со всем этим на мемо вот так скажемprocedure TForm1.Button4Click(Sender: TObject);
begin
fname:=Label6.Caption+"\"+Edit6.Text;
AssignFile(f, fname);
Reset(f);
while not EOF(f) do
begin
I:=i+1;
readln(f,s);
end;
SetLength(rec,i);
I:=0;
CloseFile(f);
AssignFile(f, fname);
Reset(f);
while not EOF(f) do
begin
Readln(f,s);
for I := 0 to (length(s)) do
begin
if s[i]<>" " then
Begin
case j of
0:rec[k].No:=rec[k].No+s[i];
1:rec[k].Reys:=rec[k].Reys+s[i];
2:rec[k].Data:=rec[k].Data+s[i];
3:rec[k].FIO:=rec[k].FIO+s[i];
end
end
else J:=j+1;
end;
memo1.Lines.Add(rec[k].No);
memo1.Lines.Add(rec[k].Reys);
memo1.Lines.Add(rec[k].Data);
memo1.Lines.Add(rec[k].FIO);
k:=k+1;
i:=0;
j:=0;
buf[0]:="";
buf[1]:="";
buf[2]:="";
buf[3]:="";
end;
получим
uyio
6516
sdgsd при строке 121 uyio 6516 sdgsd
← →
Плохиш © (2008-03-19 12:20) [8]
> По дебагу он в rec[k].No запихивает до значения символ #0(#0"121")
#0 - это признак конца строки.
← →
Галинка © (2008-03-19 16:30) [9]что мешает использовать функции Pos & Copy
← →
Галинка © (2008-03-19 16:44) [10]перераспределять память можно непосредственно при заполнении массива. Вообще код смотрится и читается оч. плохо.
← →
Галинка © (2008-03-19 17:38) [11]
procedure TForm1.Button4Click(Sender: TObject);
var
maxLength,
spaceIndex, spacePos : integer;
begin
fname:=Label6.Caption+"\"+Edit6.Text;
maxLength:=0;
AssignFile(f, fname);
Reset(f);
while not EOF(f) do begin
inc(maxLength);
SetLength(rec,maxLength);
spaceIndex = 0;
Readln(f,s);
spacePos = Pos(s, " ");
while (spacePos > 0) do begin
case spaceIndex of
0: rec[maxLength-1].No:=Copy(s, 1, spacePos-1);
1: rec[maxLength-1].Reys:=Copy(s, 1, spacePos-1);
2: rec[maxLength-1].Data:=Copy(s, 1, spacePos-1);
end;
s:=Copy(s, spacePos+1, Length(s)-spacePos);
inc(spaceIndex);
spacePos:=Pos(s, " ");
end;
rec[maxLength-1].FIO:=Copy(s, 1, Length(s));
memo1.Lines.Add(rec[maxLength-1].No);
memo1.Lines.Add(rec[maxLength-1].Reys);
memo1.Lines.Add(rec[maxLength-1].Data);
memo1.Lines.Add(rec[maxLength-1].FIO);
buf[0]:="";
buf[1]:="";
buf[2]:="";
buf[3]:="";
end;
end;
что-то вроде такого должно получится.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.04.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c