Трансляция из Delphi в С++ BuilderВыручайте!
Текущий рейтинг темы: Нет
Jaxx
Участник Проекта
Дикий прапор
 Откуда: Belarus Всего сообщений: 174 Рейтинг пользователя: 10 Дата регистрации на форуме: 13 мая 2005
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 24 июня 2005 11:32
Очень надо срочно перегнать небольшой фрагмент Delphi-кода в С++ Builder. Код следующий:
procedure TForm1.Button1Click(Sender: TObject); var f:textfile; i,r:byte; st:string; begin randomize; i:=0; assignfile(f,'index.txt'); reset(f); Memo1.Lines.Clear; Memo2.Lines.Clear; Memo3.Lines.Clear; st:=''; r:=1+(random(73)); Label2.Caption:=IntToStr®; for i:=1 to ((r-1)*3) do readln(f,st); readln(f,st); Memo1.Lines.Text:=st; st:=''; readln(f,st); Memo2.Lines.Text:=st; st:=''; readln(f,st); Memo3.Lines.Text:=st; st:=''; i:=0; end; end. | | | |
wsx
Модератор раздела
Юниксойд, сетевик
 Откуда: Казань Всего сообщений: 1084 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 24 июня 2005 11:36
ну ты код чтоль Нормально напиши! с отступами и прочим! А я уж попытаюсь вспомнить Builder...
Читать не возможно! | | | |
wsx
Модератор раздела
Юниксойд, сетевик
 Откуда: Казань Всего сообщений: 1084 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 24 июня 2005 11:37
Да и менять ту не чего!
Вот смари!
MemoX->Lines->Text='Text';
Вроде чё то такое! не помню я, давно это было и не правдой...
| | | |
Jaxx
Участник Проекта
Дикий прапор
 Откуда: Belarus Всего сообщений: 174 Рейтинг пользователя: 10 Дата регистрации на форуме: 13 мая 2005
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 24 июня 2005 11:44 Сообщение отредактировано: 24 июня 2005 11:46
Да я с отступами писал, а тема все равно по левой стенке пошла. А мне неправду не надо. Мы люди честные. Значит, пойдем пошагово. 1. Какой аналог в С++ у: assignfile(f,'index.txt'); 2. Какой аналог: reset(f); 3. Какой аналог: readln(f,st); А штука с MemoX->Lines-> ... не пойдет, мне же каждое поле Memo нужно заполнять строкой из текстового файла. | | | |
wsx
Модератор раздела
Юниксойд, сетевик
 Откуда: Казань Всего сообщений: 1084 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 24 июня 2005 12:06
Ну бля! я тебе про синтаксис!! А ты про баранов.... Ладно! нажимай F1, там пиши assignfile... Кстати, помоему там работает Assignfile...Просто ты не верно оформляешь.... Да и reset(f); - должен работать ! А вот насчёт readln,a не знаю... Эээ..кстати  ) Memo1.Lines.LoadFromFile('file'); на си будет типа того же: Memo1->Lines->LoadFromFile('File'); гыы.. | | | |
Jaxx
Участник Проекта
Дикий прапор
 Откуда: Belarus Всего сообщений: 174 Рейтинг пользователя: 10 Дата регистрации на форуме: 13 мая 2005
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 24 июня 2005 12:12
Гражданин, не ругайтесь матом! Ну не знаю я С, вообще не знаю...Первый раз сегодня увидел. Я хелп не устанавливал, файлы были поврежденные. | | | |
wsx
Модератор раздела
Юниксойд, сетевик
 Откуда: Казань Всего сообщений: 1084 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 24 июня 2005 12:40
Ну насччёт мата, это он у меня на автомате уже :((( Я и не ругаюсь.. Но Хелп - нуно устанавливать!  ) | | | |
Jaxx
Участник Проекта
Дикий прапор
 Откуда: Belarus Всего сообщений: 174 Рейтинг пользователя: 10 Дата регистрации на форуме: 13 мая 2005
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 24 июня 2005 12:51
Я знаю, что хелп - это есть хорошо. Но я ж кажу, что файлы повреждены, пришлось ставить как есть. Теперь говорит, что не хватает файла bcb6.hlp. Где его взять-то, а? Насчет reset выяснил, что просто в процедуре чтения файла указывается атрибут r, а вот про само чтение нифига не нашел. | | | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
 Откуда: Москва Всего сообщений: 3031 Рейтинг пользователя: 75 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 24 июня 2005 22:35
Jaxx Для того, чтобы ничего не съезжало, пользуйся тегом code (см. ссылку BoardCode в форме отправки сообщений), он сохраняет (по крайней мере, должен) все пробелы. По поводу переноса: вообще, Borland C Builer (по крайней мере последние версии) может использовать DCU-файлы от Delphi. wsx Употреблять мат без наличия обоснованной необходимости (а ее в данный момент не наблюдалось) действительно не советую. Как говорится, фильтруй базар.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
 Откуда: Москва Всего сообщений: 3031 Рейтинг пользователя: 75 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 24 июня 2005 22:41
По поводу функций: их прямых эквивалентов в C нет, вместо них используются функции fopen, fread, fclose, у которых несколько иные параметры.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | | |
Jaxx
Участник Проекта
Дикий прапор
 Откуда: Belarus Всего сообщений: 174 Рейтинг пользователя: 10 Дата регистрации на форуме: 13 мая 2005
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 28 июня 2005 14:04 Сообщение отредактировано: 28 июня 2005 14:06
Ну как файл прочитать, я разобрался. Написал вот что:
void __fastcall TForm1::Button1Click(TObject *Sender) { file f; unsigned char i,r; char* st; Randomize; i=0; r=1+rand()%73; Label2->Caption=r; Memo1->Lines->Clear(); Memo2->Lines->Clear(); Memo3->Lines->Clear(); st=""; std::ifstream ist("Index.txt"); Memo1->Lines->LoadFromFile("Index.txt"); }
А как прочитать не все подряд, а определенные строки? | | | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
 Откуда: Москва Всего сообщений: 3031 Рейтинг пользователя: 75 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 28 июня 2005 23:47
Если уж ты пошел по такому пути, то предлагаю поступить следующим образом: читать весь файл, а потом удалять ненужное. Т.е. что-то вроде Memo1->Lines->Delete(номер). Либо все же разбираться с функциями fopen, fwrite, fread, fclose....
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | | |
Nerd
Новичок
 Откуда: Cherepovets Всего сообщений: 3 Рейтинг пользователя: 2 Дата регистрации на форуме: 20 мар. 2006
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 20 марта 2006 21:24
поясню
объявление:
FILE *<поток>; FILE *f;
Открытие
fopen(); <поток> = fopen("путь к файлу", "тип")
тип указывется, как должен использоваться файл r - открыть для чтения; w - для записи; w+ - для чтения и записи; и т.д
Ввод и вывод данных в файл
getc(); putch();
соответсвенно посимвольно....
fgets(); fputs();
соответсвенно построчно
getw(); putw();
для целых
--- // наСИльник и дельфинист
| | | |
Время выполнения скрипта: 0.5232. Количество выполненных запросов: 18, время выполнения запросов 0.1824
|