Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2009, 01:15   #1
Hookis
Заблокирован
 
Регистрация: 30.07.2009
Сообщений: 9
По умолчанию Обозначения файла

Извините за не правельность названия темы не знаю как назвать =)
полный новичек в делфи

ситуация в следующем я сделал открытия файла в Memo

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo.Lines.LoadFromFile('zona.txt');

//Memo.Lines.SaveToFile('zona.txt'); - закрыто пока.

end;
Он вывел в memo вот такой текст
47105;51422;-2992;35672

теперь задача в следующем

нужно как то в делфи обозначит что эта строчка существует

к примеру в Php она обозначается вот так

Код:
	for ($i=0;$i+1<=count($pos);$i++)
	{
		list($x, $y, $z, $v) = split("\t", $pos[$i]);
то есть for ($i=0;$i+1<=count($pos);$i++) - то что читает все строчки с 0 по +1 то есть до бесконечности
*
list($x, $y, $z, $v) = split("\t", $pos[$i]);
это идет обозначения строки
47105;51422;-2992;35672
$x=47105 и так далее

Заранее Спасибо.
Hookis вне форума Ответить с цитированием
Старый 30.07.2009, 01:58   #2
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Эм... Что значит "обозначить что эта строчка существует"..? о_О

Вот это загруженная в Memo строка: Memo1.Text

Видимо Вам нужно вытащить из строки значения переменных... Не припомню подходящих готовых функций, наверное придётся разделить эту строку на подстроки вручную...

Посмотрите функции Pos(), PosEx(), Copy(), Delete() и Length()...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 30.07.2009, 02:07   #3
Hookis
Заблокирован
 
Регистрация: 30.07.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от DomiNick Посмотреть сообщение
Эм... Что значит "обозначить что эта строчка существует"..? о_О

Вот это загруженная в Memo строка: Memo1.Text

Видимо Вам нужно вытащить из строки значения переменных... Не припомню подходящих готовых функций, наверное придётся разделить эту строку на подстроки вручную...

Посмотрите функции Pos(), PosEx(), Copy(), Delete() и Length()...
ну на php он задает для каждого номера свой знак x y z
list($x, $y, $z, $v) = split("\t", $pos[$i]);

как сделать это в delphi
Hookis вне форума Ответить с цитированием
Старый 30.07.2009, 02:15   #4
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Хм... Я с php пока не знаком... =(

Что означает значок доллара перед x, y, z и v?
Это переменные вообще?
Их на php надо было как-то заранее объявлять?

Кстати, заранее известно сколько этих чисел-переменных будет в файле и какова их максимальная длина?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 30.07.2009, 02:29   #5
Hookis
Заблокирован
 
Регистрация: 30.07.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от DomiNick Посмотреть сообщение
Хм... Я с php пока не знаком... =(

Что означает значок доллара перед x, y, z и v?
Это переменные вообще?
Их на php надо было как-то заранее объявлять?

Кстати, заранее известно сколько этих чисел-переменных будет в файле и какова их максимальная длина?

Нет будет только 4 номера но строк много
47105;51422;-2992;35672
47003;51320;-2992;35672
46846;51326;-2992;35672
46745;51438;-2984;35672
46742;51586;-2984;35672
46835;51701;-2992;35672
47007;51704;-2992;35672
47112;51586;-2992;35672

и нужно чтоб результат был вот таким это пример первой строки

Код:
{47005;51322;-3012;-2692};{47205;51322;-3012;-2692};{47205;51522;-3012;-2692};{47005;51522;-3012;-2692}

Последний раз редактировалось Hookis; 30.07.2009 в 02:31.
Hookis вне форума Ответить с цитированием
Старый 30.07.2009, 02:34   #6
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Можно поподробнее что именно Вы хотите сделать?

Переменных-то сколько всего понадобится?
Они должны быть числами? Целые и со знаком, дробных не будет?

А когда понадобится распознать следующую строку можно будет заменить старые x, y, z и v или нужны будут все (как бы массив)?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 30.07.2009, 02:47   #7
Hookis
Заблокирован
 
Регистрация: 30.07.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от DomiNick Посмотреть сообщение
Можно поподробнее что именно Вы хотите сделать?

Переменных-то сколько всего понадобится?
Они должны быть числами? Целые и со знаком, дробных не будет?

А когда понадобится распознать следующую строку можно будет заменить старые x, y, z и v или нужны будут все (как бы массив)?
И так обьясняю есть файл:
[src]
0 test0 -84076 244560 -3728 36125
1 test1 -84035 244533 -3728 36125
2 test2 -84182 244680 -3728 36125
[/src]
столбцы в нём разделены табуляцией
с каждой ячейкой надо сделать какое либо действие
чтоб после всех манипуляцый с переменными получилось такое
[src]
start_set
log_d[0] name[test0]
x[-84176] y[244360] s[-3728] a[36125]
end_set

start_set
log_d[1] name[test1]
x[-84135] y[244333] s[-3728] a[36125]
end_set

start_set
log_d[2] name[test2]
x[-84282] y[244480] s[-3728] a[36125]
end_set
[/src]
т.е. где умножить гдето вычесть гдето просто вставить переменную в шаблон
Hookis вне форума Ответить с цитированием
Старый 30.07.2009, 03:33   #8
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

Ну можно, например, просто раскидать значения по ячейкам таблицы...

Код:
Procedure TForm1.FormCreate(Sender: TObject);
Begin
StringGrid1.FixedCols:=0;
StringGrid1.FixedRows:=0;
Memo1.Lines.LoadFromFile('C:\zona.txt');
StringGrid1.ColCount:=6; // количество столбцов таблицы (желательно чтоб совпадало с количеством "столбцов" в файле)
StringGrid1.RowCount:=3; // количество строк таблицы (желательно чтоб совпадало с количеством строк в файле)
End;

Procedure TForm1.BitBtn1Click(Sender: TObject);
Var i, j, k, Rows: Integer; Text, S: String;
Begin
Rows:=StringGrid1.RowCount-1;
For i:=0 To Rows Do
      Begin
      Text:=Memo1.Lines.Strings[i];
      k:=1;
      j:=0;
      While k<=Length(Text) Do
            Begin
            S:='';
            While (Text[k]<>#9) And (k<=Length(Text)) Do
                  Begin
                  S:=S+Text[k];
                  k:=k+1;
                  End;
            StringGrid1.Cells[j, i]:=S;
            k:=k+1;
            j:=j+1;
            End;
      End;
End;
Разделитель столбцов - символ #9 (он же табуляция)...



UpDate

Только надо бы ещё очищать StringGrid перед заполнением... А то старые значения останутся...

Нужно заменить BitBtn на обычный Button, это я по привычке...

В строке "Procedure TForm1.BitBtn1Click(Sender: TObject);" поменяйте BitBtn1Click на Button1Click...
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось Stilet; 12.08.2009 в 08:46.
DomiNick вне форума Ответить с цитированием
Старый 30.07.2009, 03:54   #9
Hookis
Заблокирован
 
Регистрация: 30.07.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от DomiNick Посмотреть сообщение
Вы добавили на форму кнопку BitBtn и StringGrid?

Ну BitBtn можно заменить на обычный Button, это я по привычке...
так все сделал все запустил все добавилось.

уже хоть кудато продвинулись, теперь точно по такой аналогий мне нужно как запустил программу там будет 1 кнопка типо Import нажал на нее она сама все сделала открыла в memo (memo будет скрыто) в текстовике будет 47105;51422;-2992;35672 он его обработал и созранил в новый файл и программу можно закрывать, а результат в сохраненом новом текстовике должен быть следующим
Код:
{47005;51322;-3012;35672};{47205;51322;-3012;35672};{47205;51522;-3012;35672};{47005;51522;-3012;35672}

Последний раз редактировалось Hookis; 30.07.2009 в 04:02.
Hookis вне форума Ответить с цитированием
Старый 31.07.2009, 16:05   #10
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Можно вот так
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  list: TStringList;
begin
  list := TStringList.Create;
  for i := 0 to StringGrid1.RowCount - 1 do
  begin
    list.Add(StringReplace(StringGrid1.Rows[i].GetText,
      #13#10, #9, [rfReplaceAll, rfIgnoreCase]));
  end;

  list.SaveToFile('D:\zona2.txt');
  list.Free;
end;
Формат файла будет таким(у меня даты)
Код:
01.07.2009	02.07.2009	03.07.2009	04.07.2009	
13.07.2009	14.07.2009	15.07.2009	16.07.2009	
17.07.2009	18.07.2009	19.07.2009	20.07.2009	
21.07.2009	22.07.2009	23.07.2009	24.07.2009
psycho-coder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перезапись файла без путя или определение расположения файла программы The Best Общие вопросы Delphi 4 13.07.2009 22:50
Проблема такова: язык:Delphi7; сохранения файла; загрузка файла в String Grid lightdevil Общие вопросы Delphi 3 06.03.2009 23:10
Подскажите пожалуста! есть ли переменная для обозначения дисковода? Medyankin Помощь студентам 4 27.07.2008 15:58
Два XL файла, данные 1-го файла являются частью другого в формуле 2-го Кот Microsoft Office Excel 2 14.08.2007 16:56