Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для Сержа
59 / 58 / 9
Регистрация: 11.12.2009
Сообщений: 350

Работа с памятью

26.02.2010, 05:54. Показов 1968. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем Привет!!!

Подскажите как узнать сколько строк храниться в переменной

Delphi
1
2
3
4
5
6
7
8
9
  
pzap = ^tzap;
  tzap = record
  nom,code,name,author,year: string;
prev,next: pzap;
 end;
 
 
  first,last,i,v,sp: pzap;
В переменной v храниться весь список и как узнать сколько строк в нем уже есть!!!

Это работа с динамическими структурами....

ПОДСКАЖИТЕ кто-нибудь

Добавлено через 11 часов 50 минут
Ни у кого мыслей нет?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2010, 05:54
Ответы с готовыми решениями:

Работа с памятью
Просьба помочь в информации по: Работе с памятью ; Выделение адресного пространства ; Чтение редактирование участка памяти; Чтение...

Работа с памятью процесса
Известен адрес в памяти другого процесса, необходимо читать и изменять значение по этому адресу

Потоки, работа с памятью
Добрый день. Есть проект, в нем очень часты операции с памятью. Что бы не пересекались указатели на области памяти или что бы не...

2
Тимуровец
 Аватар для Страдалецъ
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
26.02.2010, 08:20
Если под строками вы подразумеваете общее количество во всем списке, то только обходом.

Добавлено через 1 минуту
Как вариант, можно завести сразу счетчик и изменять его при добавлении/удалении элемента.
1
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
26.02.2010, 13:43
Да - или обход или счётчик, который обновляется при каждой операции добавления/удаления записи.
Вот техника основных действий с динамическим списком:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
procedure TForm1.Button2Click(Sender: TObject);
type
  TPZap = ^TZap;
  TZap = record
    nom, code, name, author, year : string;
    prev, next: TPZap;
  end;
var
  PTmp, PCur : TPZap;
  PStart, PEnd : TPZap;
  i : Integer;
begin
  //Создаём первую запись и инициализируем список.
  New(PTmp);
  PTmp^.nom := '1';
  PStart := PTmp;
  PEnd := PTmp;
  PTmp^.prev := nil;
  PTmp^.next := nil;
 
  //Добавляем в список вторую запись.
  New(PTmp);
  PTmp^.nom := '2';
  PTmp^.prev := PEnd;
  PTmp^.next := nil;
  PEnd^.next := PTmp;
  PEnd := PTmp;
 
  //Добавляем в список третью запись.
  New(PTmp);
  PTmp^.nom := '3';
  PTmp^.prev := PEnd;
  PTmp^.next := nil;
  PEnd^.next := PTmp;
  PEnd := PTmp;
 
  //Добавляем в список четвёртую запись.
  New(PTmp);
  PTmp^.nom := '4';
  PTmp^.prev := PEnd;
  PTmp^.next := nil;
  PEnd^.next := PTmp;
  PEnd := PTmp;
 
  //1. Подсчитать общее количество записей в списке.
 
  PTmp := PStart;
  i := 0;
  while PTmp <> nil do begin
    Inc(i);
    PTmp := PTmp^.next;
  end;
 
  ShowMessage('1. Всего в списке ' + IntToStr(i) + ' записей.');
 
  //2. Переместиться к третьей записи, считая от начала списка.
 
  PTmp := PStart;
  i := 0;
  while ( PTmp <> nil ) and ( i < 3 ) do begin
    Inc(i);
    PCur := PTmp;
    PTmp := PTmp^.next;
  end;
 
  if i < 3 then begin
    ShowMessage('2. Не удалось перейти к 3 записи от начала списка, т. к. список оказался короче.');
  end else begin
    ShowMessage('2. Третья запись от начала списка: PCur^.nom = "' + PCur^.nom + '"');
  end;
 
  //3. Переместиться к третьей записи, считая от конца списка.
 
  PTmp := PEnd;
  i := 0;
  while ( PTmp <> nil ) and ( i < 3 ) do begin
    Inc(i);
    PCur := PTmp;
    PTmp := PTmp^.prev;
  end;
 
  if i < 3 then begin
    ShowMessage('3. Не удалось перейти к 3 записи от конца списка, т. к. список оказался короче.');
  end else begin
    //Так как в списке 4 записи, то текущей будет (4 - 3 + 1) = 2 запись, считая от начала списка.
    ShowMessage('3. Третья запись от конца списка: PCur^.nom = "' + PCur^.nom + '"');
  end;
 
  //4. Удалить 3 запись, считая от начала списка.
 
  PTmp := PStart;
  i := 0;
  while ( PTmp <> nil ) and ( i < 3 ) do begin
    Inc(i);
    PCur := PTmp;
    PTmp := PTmp^.next;
  end;
 
  if i < 3 then begin
    ShowMessage('4. Не удалось перейти к 3 записи от начала списка, т. к. список оказался короче.');
  end else begin
    if PCur^.next <> nil then
      PCur^.next^.prev := PCur^.prev
    else
      PEnd := PCur^.prev
    ;
    if PCur^.prev <> nil then
      PCur^.prev^.next := PCur^.next
    else
      PStart := PCur^.next
    ;
 
    Dispose(PCur);
 
    ShowMessage('4. Третья запись от начала списка удалена.');
  end;
 
  //5. Переместиться к третьей записи, считая от начала списка.
 
  PTmp := PStart;
  i := 0;
  while ( PTmp <> nil ) and ( i < 3 ) do begin
    Inc(i);
    PCur := PTmp;
    PTmp := PTmp^.next;
  end;
 
  if i < 3 then begin
    ShowMessage('5. Не удалось перейти к 3 записи от начала списка, т. к. список оказался короче.');
  end else begin
    //Т. к. ранее была удалена 3 запись и сейчас в списке осталось 3 записи,
    //то текущей окажется запись, у которой: PCur^.nom = '4'.
    ShowMessage('5. Третья запись от начала списка: PCur^.nom = "' + PCur^.nom + '"');
  end;
 
  //6. Удаялем список из памяти.
 
  PCur := PStart;
  while PCur <> nil do begin
    PTmp := PCur;
    PCur := PCur^.next;
    Dispose(PTmp);
  end;
  PStart := nil;
  PEnd := nil;
  PCur := nil;
  PTmp := nil;
 
  ShowMessage('6. Список удалён из памяти.');
 
end;
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.02.2010, 13:43
Помогаю со студенческими работами здесь

Работа с памятью программы
Здравствуйте. Стараюсь написать программу которая будет получать с другой программы данные, то есть будет считывать данные с...

Работа с памятью чужого процесса
Здраствуйте. Я в delphi еще новичек, и меня интересует такой вопрос: я думаю вы знаете что есть такая GTA:SA и SAMP. Так вот, в самп при...

Работа с памятью
Всем привет! Такая задача: открываю процесс в программе и я должен просканировать все его адреса памяти Делаю так: for i := $FFFFFFFF do ...

Нужна книга, где рассматриваются работа с прерываниями, указатели, работа с памятью, ассемблерные вставки
Привет всем! Подскажите, пожалуйста, хорошую книгу по C (именно C, не C++). Интересует работа с прерываниями, указатели, работа с памятью,...

Работа с памятью
Добрый вечер! Знаете ли вы какие-нибудь полезные источники, где хорошо описывается, как работать с памятью? Заранее благодарю.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru