Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.13;
Скачать: CL | DM;

Вниз

Не пишет первое слово   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.017 c
2-1206023020
andreil
2008-03-20 17:23
2008.04.13
Как получить параметры для уже выполняющейся программы?


2-1205858255
timekiller
2008-03-18 19:37
2008.04.13
XML, Ноды, Рекурсия?


2-1205529536
greg123
2008-03-15 00:18
2008.04.13
Добавление записей и отображение в dbgrid


15-1204034204
Семеныч
2008-02-26 16:56
2008.04.13
Вопрос по Java


2-1205499225
Washington
2008-03-14 15:53
2008.04.13
SendMessage