Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
2 / 2 / 0
Регистрация: 20.02.2014
Сообщений: 48

Загрузка данных в AnsiString из файла

02.03.2014, 12:09. Показов 2911. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста. Сам даже не представляю, как такой можно осуществить.
У меня имеется файл:
Кликните здесь для просмотра всего текста
======================================== ======================================== =======
Файл данных физических типов планет
======================================== ======================================== =======


======================================== ======================================== =======
*BEGIN*
======================================== ======================================== =======

Название := Скалы
Описание :=
Индекс изображения := 2
Область технологии для колонизации := Колониз. каменистой планеты

Название := Лед
Описание :=
Индекс изображения := 1
Область технологии для колонизации := Колониз. ледяной планеты

Название := Газовый гигант
Описание :=
Индекс изображения := 3
Область технологии для колонизации := Колониз. планеты газ. гиганта

======================================== ======================================== =======
*END*
======================================== ======================================== =======

Мне надо не открывая данный файл в Memo или чём то похожем, загрузить названия физических типов планет(то есть: Скалы, Лед, Газовый гигант и другие, которые может добавить сам пользователь) в массив AnsiString, и только те названия, которые находятся между фразами *BEGIN* и *END*. Заранее благодарен.

P. S. Файл отображается некорректно, но это не меняет смысла.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.03.2014, 12:09
Ответы с готовыми решениями:

Загрузка данных из файла с возможностью выбора файла
Всем доброго времени суток. У меня возник такой вопрос как организовать выбор файла с данными на языке СИ, пришла мысль в голову, что можно...

Сохранение данных из едитов и загрузка данных из файла
Здравствуйте! Задача следующего плана. У меня на форме 9 едитов, я ввожу в них данные и по нажатию кнопки, все данные с этих эдитов...

Загрузка данных из doc файла в базу данных
Добрый день светлые умы! Помогите пожалуйста решить поставленную задачу. Мне нужно создать 2 базы данных. Одна уже заполненная, а...

15
02.03.2014, 13:23

Не по теме:

Цитата Сообщение от sanchoz Посмотреть сообщение
Мне надо не открывая данный файл в Memo или чём то похожем, загрузить названия физических типов планет
Читай файл телепатически :D

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
02.03.2014, 13:45
Цитата Сообщение от sanchoz Посмотреть сообщение
не открывая данный файл в Memo
Не открывай в Memo, открой в TStringList/TStringStream, это невизуальные компоненты. Оттуда уже читай то, что нужно... Можно вообще прочитать все содержимое файла в одну строку, и работать с ней, если тебе так удобнее...
0
2 / 2 / 0
Регистрация: 20.02.2014
Сообщений: 48
02.03.2014, 19:19  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
открой в TStringList/TStringStream
Это значит что надо загрузить файл в данный объект, на сколько я понял? Если так, то данный вариант не подходит. В таком случае мне будет проще спрятать Мемо за каким либо другим объектом и в него загрузить файл. Есть варианты вообще без загрузки файла??
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
02.03.2014, 19:25
Напоминает ситуацию: угадай, что в багажнике, не открывая его.
По теме: то есть ты хочешь не загружая (читай, не открывая файл), получить его содержимое?
Тебе на битву экстрасенсов нужно, а не на форум программистов :-).
0
02.03.2014, 19:29

Не по теме:

Цитата Сообщение от sanchoz Посмотреть сообщение
Есть варианты вообще без загрузки файла??
Есть, развивайте экстрасенсорное чИтенение.
Пипец :wall:

0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
02.03.2014, 19:56
А может ТС хочет что-то подобное ("копипаста" из моего стародревнего индокитайского "проекта"), легко переделать под (полностью) AnsiString:
содержимое файла
1 0 RU 9351641
сохранение
C++
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
void __fastcall TForm1::Button8Click(TObject *Sender)
{
  if (Trim(Edit1->Text) != "")
  {
  int iFileHandle;
  if (FileExists(GetCurrentDir()+"\\cfg.txt"))
    DeleteFile(GetCurrentDir()+"\\cfg.txt");
  iFileHandle = FileCreate(GetCurrentDir()+"\\cfg.txt");
 
  // show match list ?
  if (Image14->Visible == 1)
    FileWrite(iFileHandle, "0", sizeof("0"));
  else
    FileWrite(iFileHandle, "1", sizeof("1"));
 
  // Username or UID ?
  if (RadioButton1->Checked)
    FileWrite(iFileHandle, "1", sizeof("1"));
  else
    FileWrite(iFileHandle, "0", sizeof("0"));
 
  // location  
  int I;
  AnsiString location = "WW";
  for (I = 1; I < 244; I++)
    if (UpperCase(LeftStr(Trim(ComboBox1->Text), 2)) == LeftStr(ComboBox1->Items->Strings[I], 2))
    {
      location = LeftStr(ComboBox1->Items->Strings[I], 2);
      break;
    }
  FileWrite(iFileHandle, location.c_str(), location.Length()+1);
 
  FileWrite(iFileHandle, Trim(Edit1->Text).c_str(), Trim(Edit1->Text).Length());
 
  FileClose(iFileHandle);
 
  Button9->Enabled = 1;
  }
  else
    ShowMessage("Имя пользователя или UID не может быть пустым.");
}
загрузка
C++
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
void __fastcall TForm1::FormShow(TObject *Sender)
{
  StringGrid1->Cells[0][0] = "Позиция";
  StringGrid1->Cells[1][0] = "Уровень";
  StringGrid1->Cells[2][0] = "Страна";
  StringGrid1->Cells[3][0] = "Имя пользователя";
  StringGrid1->Cells[4][0] = "UID";
  StringGrid1->Cells[5][0] = "EXP";
  StringGrid1->Cells[6][0] = "Побед";
  StringGrid1->Cells[7][0] = "Поражений";
  StringGrid1->Cells[8][0] = "Дисконектов";
  
  int iFileHandle, iFileLength, iBytesRead;
  char *pszBuffer;
  if (FileExists(GetCurrentDir()+"\\cfg.txt"))
  {
    iFileHandle = FileOpen(GetCurrentDir()+"\\cfg.txt", fmOpenRead);
    iFileLength = FileSeek(iFileHandle,0,2);
 
    FileSeek(iFileHandle,0,0);
    pszBuffer = new char[iFileLength+1];
    FileRead(iFileHandle, pszBuffer, 1);
    if(StrToInt(pszBuffer[0]))     // show match list ?
    {
      GroupBox4->Visible = 1;
      Button3->Visible = 1;
      Button4->Visible = 1;
      Button5->Visible = 1;
      Button6->Visible = 1;
      Button7->Visible = 1;
      Edit2->Visible = 1;
      Label39->Visible = 1;
      Label52->Visible = 0;
      Image14->Visible = 0;
    }
    else
    {
      GroupBox4->Visible = 0;
      Button3->Visible = 0;
      Button4->Visible = 0;
      Button5->Visible = 0;
      Button6->Visible = 0;
      Button7->Visible = 0;
      Edit2->Visible = 0;
      Label39->Visible = 0;
      Label52->Visible = 1;
      Image14->Visible = 1;
    }
    FileSeek(iFileHandle,2,0);
    FileRead(iFileHandle, pszBuffer, 1);
    if(StrToInt(pszBuffer[0]))     // Username or UID ?
      RadioButton1->Checked = 1;
    else
      RadioButton2->Checked = 1;
 
    // location
    FileSeek(iFileHandle,4,0);
    iBytesRead = FileRead(iFileHandle, pszBuffer, 2);
    AnsiString location = "";
    for (int i=0;i<iBytesRead;i++)
      location = location + pszBuffer[i];
 
    int i;  
    if (location == "WW")
      ComboBox1->ItemIndex = 0;
    else
      for (i = 1; i < 244; i++)
        if (location == LeftStr(ComboBox1->Items->Strings[i], 2))
        {
          ComboBox1->ItemIndex = i;
          break;
        }
 
    FileSeek(iFileHandle,7,0);
    iBytesRead = FileRead(iFileHandle, pszBuffer, iFileLength-1);
    FileClose(iFileHandle);
    for (i=0;i<iBytesRead;i++)
      Edit1->Text = Edit1->Text + pszBuffer[i];
 
    delete [] pszBuffer;
 
    if (Image14->Visible == 1)
      Button1->Click();
  }
  else
  {
     GroupBox4->Visible = 0;
     Button3->Visible = 0;
     Button4->Visible = 0;
     Button5->Visible = 0;
     Button6->Visible = 0;
     Button7->Visible = 0;
     Edit2->Visible = 0;
     Label39->Visible = 0;
     Label52->Visible = 1;
     Image14->Visible = 1;
     Button9->Enabled = 0;
  }
}
1
2 / 2 / 0
Регистрация: 20.02.2014
Сообщений: 48
07.03.2014, 13:34  [ТС]
Хоть кто нибудь понял что конкретно мне надо? Мне нужно в ComboBox(он же - массив AnsiString) загрузить некоторые слова(они же - названия физических типов планет(то есть: Скалы, Лед, Газовый гигант и другие, которые может добавить сам пользователь)) не открывая данный файл(прочитать файл, но не открывать) так как это занимает лишнее время(сравните: просто открыть 1 файл, или сначало открыть 1 файл, потом его закрыть и снова открывать файл, но уже другой. Мне не нужно 2 лишних звена!).
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
07.03.2014, 13:40
Цитата Сообщение от sanchoz Посмотреть сообщение
не открывая данный файл(прочитать файл, но не открывать)
А как прочитать файл не открывая его?
0
2 / 2 / 0
Регистрация: 20.02.2014
Сообщений: 48
07.03.2014, 13:41  [ТС]
gunslinger,я в чём-то разобрался, но но не могу понять, что делают функции FileRead, FileSeek? А так я всё понял.
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
07.03.2014, 16:51
FileRead(UINT Handle, void *Buffer, unsigned Count)
читает из файла (по Handle) в буфер размером Count.
FileSeek(UINT Handle, int Offset, int Origin)
изменяет положение "точки чтения/записи" (указателя) в файле, смещение задается в Offset и зависит от Origin, который задает место, где находится указатель (начало, конец или текущее позиция в файле).

P.S.: а вообще почаще открывай справку в своей среде разработки, если не получается найти описание в интернете.
1
2 / 2 / 0
Регистрация: 20.02.2014
Сообщений: 48
15.03.2014, 08:46  [ТС]
Как жаль, что никто не понял, что мне надо. Я хочу просто загрузить части строк из файла(прочитать файл и загрузить часть строк, а не загружать весь файл).
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,394
Записей в блоге: 3
15.03.2014, 09:24
Лучший ответ Сообщение было отмечено sanchoz как решение

Решение

"А как же тебя понять, хироняка, ежели ты не говоришь ничего"
И.В. Грозный


Ты это хотел получить?
Если да - то вот так как-то...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TStringList *Sl = new TStringList;
  ComboBox1->Clear();
  Sl->LoadFromFile("text.txt");
  for(int i = 0; i < Sl->Count; i++)
   {
     String s = Sl->Strings[i];
     if(s.Pos("Название") != 0)
        ComboBox1->Items->Add(s.SubString(s.Pos("=")+1,s.Length()-s.Pos("=")));
   }
  delete Sl;
}
Миниатюры
Загрузка данных в AnsiString из файла  
2
2 / 2 / 0
Регистрация: 20.02.2014
Сообщений: 48
16.03.2014, 19:26  [ТС]
Ну не ужели хоть кто-то меня понял. Большое спасибо, неужели моя работа продолжиться.
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
16.03.2014, 20:09
Сначала ты пишешь, что нужно открыть файл, не открывая его, потом оказывается, что тебе нужно, чтобы "открытие" не было видно "визуально" (?)
C++
1
  Sl->LoadFromFile("text.txt");  // Sl == StringList
Во-первых, тот же Memo можно было сделать невидимым.
Во-вторых, как ты спрашивал, так тебе и отвечали.
Так что проблема не в отвечающих, а в тебе. Учись правильно формулировать то, что требуется.

Не по теме:

P.S.: посвящается всем "персонам", которые, например, не понимают разницы между цифрами и числами и всего подобного в том же духе либо вообще не могут связать слова в понятное предложение. Ибо накипело.

0
2 / 2 / 0
Регистрация: 20.02.2014
Сообщений: 48
20.03.2014, 08:31  [ТС]
Ты прав. Но я понял, что по другому никак нельзя. Сам проверь всю тему, нигде нет того, что именно мне надо. Я понял, что не загружая файл невозможно достать и него информацию. Если будет другой вариант, то и его рассмотрю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.03.2014, 08:31
Помогаю со студенческими работами здесь

Загрузка данных из файла
у меня есть программа на C# в ней есть привязка в которой дается логин и я генерирую пароль к программе (мне надо сделать так чтобы...

Загрузка данных из файла
подскажите пожалуста как сделать так чтобы: К примеру на форма 5 штук Label (label1, Label2, Label3, Label4, Label5) И одна кнопка...

Загрузка данных из файла
Разбираюсь с загрузкой из файла. Вот что напечатал) var Book = from Books in XDocument.Load(path).Descendants(&quot;Book&quot;) ...

Как перевести текст из AnsiString (в формате UTF8) в AnsiString формата Windows-1251?
Поиск по форуму не решил текущую проблему: 1. Есть текст в формате UTF-8 в величине: AnsiString qw; Вопрос: 2. Как перевести текст в...

Загрузка данных из файла по условию
Имеется два класса: public $metaxml_file = 'application.xml'; и public $metaxml_custom = 'metadata.xml'; public function...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru