![]() |
|
#1
|
|||
|
|||
![]() Есть программа моделирующая движение автомобиля, есть кнопки для торможения и ускорения авто. Суть в том чтобы при нажатии на одну из кнопок торможения шла запись скорости автомобиля и оставшегося расстояния до объекта (эти значения рассчитываются по формуле в программе). Как это лучше организовать и куда записывать? Возможно ли записать в txt файлик?
|
#2
|
||||
|
||||
![]() Да возможно. Нужно более точно знать условия, чтобы выбрать, что лучше использовать.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 06.09.2011 в 21:45. |
#3
|
||||
|
||||
![]() Простенький пример, можно подогнать под свою прогу:
Код:
Var F: TextFile; n: Integer; begin AssignFile(F, 'MyTxt.txt'); ReWrite(F); For n:= 1 To 100 Do Writeln(F, '№ '+IntToStr(n)); CloseFile(F); end; If end Then begin; |
#4
|
||||
|
||||
![]() AND_REY, если ты непротив, то я немного дополню твой код:
Код:
var F: TextFile; n: Integer; begin AssignFile(F, 'MyTxt.txt'); try if not FileExists('MyTxt.txt') Rewrite(F) else Reset(F); for n := 1 To 100 do WriteLn(F, '№ ' + IntToStr(n)); finally CloseFile(F); end; end; |
#5
|
||||
|
||||
![]() Да, с проверками правильнее будет.
If end Then begin; |
#6
|
||||
|
||||
![]() Совсем правильно, будет так:
![]() Код:
var F: TextFile; n: Integer; begin {$I-} AssignFile(F, 'MyTxt.txt'); try if not FileExists('MyTxt.txt') Rewrite(F) else Reset(F); for n := 1 To 100 do WriteLn(F, '№ ' + IntToStr(n)); finally CloseFile(F); end; {$I+} end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
|||
|
|||
![]() А не проще так:
Код:
var L : TStringList; I : Integer; begin L := TStringList.Create; For I := 1 To 100 Do L.Add('№ ' + IntToStr(n)); Try L.SaveToFile('MyFile.txt'); Finally L.Free; End; end; Создание, сохранение и уничтожение объекта (L) можно разнести в разные места, соответсвенно, сразу писать в него данные и не создавать доп. структуры для их хранения. |
#9
|
|||
|
|||
![]() спасибо большое, а как потом прочитать записанную информацию? Я просто немного по другому сделал. На кнопку торможения я прописал:
Код:
// Попытка открыть файл Test.txt для записи AssignFile(myFile, 'Test.txt'); ReWrite(myFile); // Запись данных в этот файл WriteLn(myFile, 'v(торможения)='+FloatToStr(Round(v*100)/100)); // Закрытие файла CloseFile(myFile) Код:
var text : string; begin // открытие файла для чтения Reset(myFile); // Показ содержимого файла while not Eof(myFile) do begin ReadLn(myFile, text); ShowMessage(text); end; // Закрытие файла в последний раз CloseFile(myFile); Последний раз редактировалось lmikle, 08.09.2011 в 00:50. |
#10
|
||||
|
||||
![]() Проверять наличие файла и, если файл существует, писать не Rewrite, а Reset. Соответственно при открытии файла, в котором может быть больше чем одна запись, читать только первую.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#11
|
|||
|
|||
![]() подскажите, хочу отрыть тот же файл и дописать информацию к той которая там уже есть. У меня же при этом старая информация затирается и в ответе я вижу только то что хотел дописать. как решить эту проблему?
|
#12
|
||||
|
||||
![]() Я уже писал: "писать не Rewrite, а Reset".
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#13
|
|||
|
|||
![]() {$I-}
AssignFile(myFile, 'Test.txt'); if FileExists('C:\Documents and Settings\Àäìèíèñòðàòîð\Ðàáî÷èé ñòîë\ÀÂÒÎ_3\Test.txt') then Reset(myFile); else ReWrite(myFile); WriteLn(myFile, 'Ïðîåçä íà êðàñíûé ñèãíàë ñâåòîôîðà'); CloseFile(myFile); {$I+} у меня так вот прописано и как я понимаю это значит если такой то файл существует то Reset иначе Rewrite...а дальше идет запись. |
#14
|
||||
|
||||
![]() А вот теперь используй процедуру Append для добавления записи в конец файла.
Код:
AssignFile(f, OpenDialog1.FileName); Append(f); Writeln(f, 'I am appending some stuff to the end of the file.'); { insert code here that would require a Flush before closing the file } Flush(f); { ensures that the text was actually written to file } CloseFile(f); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#15
|
|||
|
|||
![]() Спасибо, работает) А что означает Flush(f)?
|