![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
чтение из файла и проблема при его перезаписи [D7, XP]
gvozdkoff © (2012-01-18 14:02:00)Всем привет, такое вот дело.
Изsqliteбазы через запрос сохраняю данные в файл.
Результат запроса представлен одним столбцом.
Эти данные передаю вmemo
А изmemoсохраняю в файл.
memo1.Lines.SaveToFile('lat.txt');
Далее, читаю данные из этого файла и преобразовываю(ставлю разделитель между числами, например было 1234.5678 а делаю 12.345678).
var
strltd:string;
LogF: TextFile;
begin
memo1.Clear;
AssignFile(LogF,'lat.txt');
Reset(LogF);
While not EOF(LogF) do
begin
ReadLn(LogF,strltd);
strltd:=Copy(strltd, 1, 9);
strltd:=copy(strltd,1,2)+'.'+copy(strltd,3,2)+copy(strltd,6,4);
while strltd[1]='0' do Delete(strltd,1,1);
memo1.Lines.Add(strltd);
memo1.Lines.SaveToFile('lat.txt');
end;
end;
процесс не может получить доступ к файлу так как файл занят другим процессом.
Как я понимаю, это бывает если файл открыт уже, то есть результат запроса я сохранил в созданный файл, но затем файл не закрыл, но пытаюсь прочитать и перезаписать.
Господа как это исправить можно ?
gvozdkoff (2012-01-18 22:22:00) [1]Господа , большое спасибо за помощь и наставления ))
u4enik (2012-01-18 18:51:00) [2]Ega23 ©, ну вылизывать ему код самому прийдется.
я же показал как на его коде, что бы дошло..
ктому же понять что нужно очень тяжело
может ему нужно:
for i := 0 to SList.Count - 1 do begin
SList.Strings[i]:= FloatToStr( StrToFloatDef(SList.Strings[i],0)*100 );
end;
Ega23 (2012-01-18 18:12:00) [3]
> begin
> strltd:=SList.Strings[i];
> if system.length(strltd >= 9) THEN begin
> strltd:=Copy(strltd, 1, 9);
> strltd:=copy(strltd,1,2)+'.'+copy(strltd,3,2)+copy(strltd,
> 6,4);
> while strltd[1]='0' do Delete(strltd,1,1);
> SList.Strings[i]:= strltd;
> end;
> end
Расстрелять.
u4enik (2012-01-18 18:10:00) [4]begin
strltd:=SList.Strings[i];
if system.length(strltd >= 9) THEN begin
strltd:=Copy(strltd, 1, 9);
strltd:=copy(strltd,1,2)+'.'+copy(strltd,3,2)+copy(strltd,6,4);
while strltd[1]='0' do Delete(strltd,1,1);
SList.Strings[i]:= strltd;
end;
end
RWolf (2012-01-18 15:01:00) [5]а в чём затруднение-то? как в исходном коде делали со strltd, так и тут продолжайте с TempStr.
> L:=1;
SetLength(TempStr, 1);
gvozdkoff (2012-01-18 14:49:00) [6]Я конечно думал как вариант сохранить в другой файл )), но блин вроде как по нармальному хочется сделать
gvozdkoff (2012-01-18 14:43:00) [7]Господа, тяжеловато мне ))
Помогите советом и поправьте если что не так,
Вот моя логика
var
SList: TStringList;
TempStr: String;
i, L:integer;
begin
Slist:= TStringList.Create; // собственно создаю стринглист
SList.LoadFromFile('lat.txt'); // загружаю данные из файла
for i := 0 to SList.Count - 1 do // в общем считаем кол-во строк
begin
TempStr := SList.Strings[i]; //временная строка для опытов ))
L := Length(TempStr); //считаем кол-во символов в строке
end;
SList.SaveToFile('lat.txt');
finally
SList.Free;
И на этом у меня тупик, надо например мне записать в файл только первый символ
L:=1;, не срабатывает
u4enik (2012-01-18 14:17:00) [8]совершенно верно, я просто подумал может memo видимое у него и нужны визуальные данные походу..
Ega23 (2012-01-18 14:11:00) [9]
> лучше читайте в мемо сразу
Зачем? Есть же TStringList, в конце-концов. Тем более, что TMemo именно его внутри и использует. Туда и читать и писать надо,
u4enik (2012-01-18 14:08:00) [10]лучше читайте в мемо сразу
memo1.lines.loadFromFile
далее пробегайтесь по строкам и корректируйте.
for i:=0 to memo1.lines.count-1 do begin
memo1.lines[i]:= mycorrect(memo1.lines[i]);
end;
и затем
memo1.lines.Save