Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.48 MB
Время: 0.007 c
2-1205741559
F@T@L_Err0r
2008-03-17 11:12
2008.04.13
Запуск службы


2-1205830626
031178
2008-03-18 11:57
2008.04.13
Запрос !!!


15-1202564961
Kerk
2008-02-09 16:49
2008.04.13
Проверялка занятости доменов


2-1205916579
Дмитрий
2008-03-19 11:49
2008.04.13
процент заряда акумулятора на нотбук ?


2-1205497768
Некто
2008-03-14 15:29
2008.04.13
Иконка приложения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский