IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> файлы+динамическая память, использование дин. памяти при работе с несколькими файлами
Renbo
сообщение 9.04.2007 19:34
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской

Репутация: -  0  +


Имеется 2 файла справочника и один файлик основной. Необходимо сформировать ведомости. Первая ведомость формируется как надо, тоесть как мне надо ). А вот вторая в последнем столбике Количество Струдников не прописывает их количество. Код написан, вроде должно работать, а не тут-то было. Вот в этом файле Прикрепленный файл  Vedomosti.pas ( 12.69 килобайт ) Кол-во скачиваний: 516
- процедуры по формированию ведомостей. Прикрепленный файл  spravka1.txt ( 229 байт ) Кол-во скачиваний: 341
- первый справочник(текстовый). Прикрепленный файл  ___________________2.rar ( 541 байт ) Кол-во скачиваний: 311
- основной фаил и второй справочник(оба они типизированные).



Но может вы и без этого увидите как исправить процедуру по созданию второй ведомости.
Заранее благодарен.


Сообщение отредактировано: Renbo - 9.04.2007 19:45
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 9.04.2007 19:46
Сообщение #2


Гость






Цитата
Как мне его вам тут выложить?
Заархивировать все вместе?
 К началу страницы 
+ Ответить 
Renbo
сообщение 9.04.2007 19:51
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской

Репутация: -  0  +


всё-всё, выложил все необходимые файлы.
Теперь можешь смотреть smile.gif

Я понял кажется в чём ошибка, но как устранить...что-то не соображу...

procedure vedomost2_sozdanie;
VAR
i,w,k,j,t,p,n:integer;
s1,s2,s3,s4,s,q:string;
z:tmas;
x:thmas;
l:tmasiv;
Begin
w:=0;
q:='0';
i:=0;
assign(spravochnik1,'spravka1.txt');
assign(vedomost2,'vedomost2');
reset(spravochnik1);
while not(eof(spravochnik1)) do
begin
inc(w);
readln(spravochnik1,s);
end;
rewrite(vedomost2);
reset(spravochnik1);
with Zap_ved2 do
While not(eof(spravochnik1)) do
begin
readln(spravochnik1,s1);
readln(spravochnik1,s2);
readln(spravochnik1,s3);
readln(spravochnik1,s4);
Cod_OTDELA:=s1;
FIO_zava:=s3;
telefnchik:=s4;
kol_vo_sotr:=q;
write(vedomost2,Zap_ved2);
end;
close(spravochnik1);
close(vedomost2);
sortirovkaVED2;
sortirovkaosnovpo3_1;

t:=filesize(osnov);
getmem(z,t*sizeof(Zap));
getmem(x,t*sizeof(HZ));
k:=0;
while not(eof(osnov)) do
begin
read(osnov,Zap);
inc(k);
z^[k]:=zap;
end;
close(osnov);
k:=0;
reset(osnov);
while not(eof(osnov)) do
begin
read(osnov,Zap);
inc(k);
x^[k]:=helpzap; { <-- вот тут я создаю массив записей, но так как первоначально }
end; {файла на него нету, то он собой представляет 1 запись всего, как я понимаю...}
close(osnov); {а мне надо чтобы их было столько же сколько в файле osnov}
p:=1;
For i:=1 to t do
begin
IF z^[i].CodeOTD <> z^[i+1].CodeOTD then {или может тут ошибка в построение цикла...хотя я вручную проверял...вроде правильно...}
begin
x^[i].CODEOTDELA:=z^[i].CodeOTD;
str(p,x^[i].TAB);
p:=1;
end
Else
begin
IF z^[i+1].Tabnomr<>z^[i].Tabnomr then
inc(p);
end;
end;
freemem(z,t*sizeof(Zap));

reset(vedomost2);
j:=filesize(vedomost2);
getmem(l,j*sizeof(Zap_ved2));
k:=0;
while not(eof(vedomost2)) do
begin
read(vedomost2,Zap_ved2);
inc(k);
l^[k]:=Zap_ved2;
end;
close(vedomost2);
For i:=1 to j do
FOR n:=1 to t do
IF l^[i].Cod_OTDELA=x^[j].CODEOTDELA then
l^[i].kol_vo_sotr:=x^[j].TAB;
rewrite(vedomost2);
For i:=1 to j do
write(vedomost2,l^[i]);
close(vedomost2);
freemem(l,j*sizeof(Zap_ved2));
freemem(x,t*sizeof(HZ));
sortirovka;
End;



Сообщение отредактировано: Renbo - 9.04.2007 22:44
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 15.11.2025 10:36
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"