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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2009, 20:04   #11
Xcopy
Форумчанин
 
Аватар для Xcopy
 
Регистрация: 03.02.2009
Сообщений: 126
По умолчанию

Цитата:
Нет, она не нужна.
Тебе понадобятся еще этот кирпич:
StrToInt(S) - переводит строку в тип INTEGER
ну это-то понятно.
Спасибо. Будем пытаться.

а как мне записать в переменную какую-то цифру?
я нашел, когда цифра начинается, и когда кончается. А как мне скопировать ее в переменную? Есть какая-нибудь такая функция вроде того: копировать(с такого-то символа, по такойвот, в переменную такую-то).

Последний раз редактировалось Stilet; 16.09.2009 в 09:49.
Xcopy вне форума Ответить с цитированием
Старый 15.09.2009, 20:19   #12
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Есть Copy(S,N,M)
Правописание:
SS:=Copy(S,N,M) Скопировать в SS M символов, начиная с N.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 15.09.2009, 20:42   #13
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Допустим у Вас есть 6 (любое разумное количество) переменных - var1 . . var6, которые нужно задать параметрами из файла ( файл текстовый -data.txt).
Код:
procedure ReadData;

var i: byte;   //  счетчик циклов
     f: TextFile;  //  файловая переменная
     rd: integer;  //  переменная  чтения  из  файла "данных"  
    
begin
  AssignFile(f,'data.txt');
  {$I-}                                // перевод контроля ошибок на программу
  Reset(f);
  {$I+}                            //  востановление режима автоматич. обработки ошибок
  if IOResult = 0 then      //  проверка ошибки открытия  файла
  begin
    for i:=1 to 6 do
    begin
      Read(f,rd);
      case i of
       1: var1:= rd;
       2: var2:= rd;
       3: var3:= rd;
       4: var4:= rd;
       5: var5:= rd;
       6: var6:= rd;
      end;
  CloseFile(f);
  end
  else
  begin
  Application.MessageBox(PChar('Файл не найден.Нажмите OK'),
                           PChar('Загрузка данных'),
                           MB_ICONQUESTION+MB_OK);
  end;
end;
Такие задачи обычно возникают при необходимости сохранить параметры программы при закрытии приложения и затем при следующем запуске приложения загрузить в программу сохранённые данные.
Процедура сохранения данных :
Код:
procedure WriteData;

var i: integer;   //  счетчик циклов
     f: TextFile;  //  файловая переменная
     wd: integer;  //  переменная  записи  в  файл "данных"  

begin
  wd:=0;             //  требование  компилятора об  инициализации
  AssignFile(f,'data.txt');
  Rewrite(f);
  for i:=1 to 6 do
  begin
     case i of
       1: wd:= var1;
       2: wd:= var2; 
       3: wd:= var3;
       4: wd:= var4; 
       5: wd:= var5;
       6: wd:= var6; 
     end;
  Write(f,wd,' ');
  end;
  CloseFile(f);
end;
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 16.09.2009, 09:51   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если есть возможность пользовать делфи то предлагаю истертый до дыр способ:
Код:
var bs:string;s:TStringList;
begin
 bs:='12 56 8 8 521 55';
 s:=TStringList.Create;
 s.DelimitedText:=bs;
 caption:=s[1];
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.09.2009, 17:24   #15
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Читает все переменные из файла:
Код:
program Project1;
var
   a:string;
   i:integer;
   f:textfile;
   sa:array[0..100] of string;
   count:integer;
begin
   assign(f,'c:\123.txt');//Открываем файл...
   {$I-}
      reset(f);//Только для чтение
   {$I+}
   read(f,a);//Читаем из него всё( в принципе его можно закрыть в следующей строчке, но я так не сделал)
   writeln(a);//Выводим содержимое файла на экран
   count:=0;//Здесь будет хранится кол-во занятых элементов массива
   while length(a)<>0 do//Пока наша строчка не пуста...
   begin
      if pos(' ',a)<>0 then//Если нашёлся пробел то..
      begin
         sa[count]:=copy(a,1,pos(' ',a));//Копируем данные до пробела
         delete(a,1,pos(' ',a));//Удаляем до пробела
      end
      else//Если же пробел не найден и файл ещё не пуст, то осталось последняя переменная
      begin
         sa[count]:=copy(a,1,length(a));//Копируем её
         delete(a,1,length(a));//И удаляем
      end;
         writeln(sa[count]);//Выводим каждую переменную на экран в столбик
         count:=count+1;//Пишем что заняли ещё один элемент массива(можно заменить на inc(count))
      end;
   CloseFile(f);//Закрываем файл
   readln(i);//Ждём завершение программы пользователем
end.
pushl $0x18E3DF6B
call ICQ

Последний раз редактировалось russian-stalker; 16.09.2009 в 17:33.
russian-stalker вне форума Ответить с цитированием
Старый 17.09.2009, 08:54   #16
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Уже писал в одной теме.
Код читает файл построчно и из каждой строки заносит целочисленные значения в массивы. Код без проверок. Нужно будет - сами добавите.
Код:
Type TArrayOf=array of integer;
Type PArrayOf=array of ^TArrayOf;

var
  Per: PArrayOf;

procedure TForm1.Button1Click(Sender: TObject);
var
  SL: TStringList;
  Str, Bf: String;
  i, n, c, q: integer;
  Curr: TArrayOf;
begin
  SL:=TStringList.Create;
  SL.LoadFromFile(ExtractFilePath(ParamStr(0))+'\file.txt');
  i:=0;

  For i:=0 to SL.Count-1 do
  begin
    Str:=trimleft(TrimRight(SL.Strings[i]));
    n:=0;

    SetLength(Per,i+1);
    SetLength(Curr,trunc(length(Str)/2)+2);

    while Str<>'' do
    begin
      q:=Pos(' ',Str); //разделитель чисел в строке

      if q<>0 then
      begin
        Bf:=copy(Str,1,q-1);

        if TryStrToInt(Bf,C) then
        begin

          Curr[n]:=C;
          inc(n);
        end;

        Delete(Str,1,q);
        Str:=TrimLeft(Str);
      end

      else
      begin
        if TryStrToInt(Str,C) then
          Curr[n]:=C;
        Str:='';
      end;

    end;

    New(Per[i]);
    SetLength(Per[i]^,n+1);
    Per[i]^:=Copy(Curr,0,n+1);
  end;
end;
Чтобы узнать количество массивов пишем:
Код:
SizeOf(Per)
Чтобы узнать количество элементов в определенном массиве I - пишем:
Код:
SizeOf(Per[i]^)
Чтобы обратиться к переменной N из любого массива I пишем:
Код:
MyVar:=Per[i]^[n]
Познавая других, мы познаем себя.
С'est la vie...

Последний раз редактировалось SuperVisor; 17.09.2009 в 08:56.
SuperVisor вне форума Ответить с цитированием
Старый 17.09.2009, 09:04   #17
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Если есть возможность пользовать делфи то предлагаю истертый до дыр способ:
Код:
var bs:string;s:TStringList;
begin
 bs:='12 56 8 8 521 55';
 s:=TStringList.Create;
 s.DelimitedText:=bs;
 caption:=s[1];
end;
Небольшое дополнение. Тебе же в Делфи нужно? Так и загружай свои строки в Мемо, а дальше по рецепту от Stilet. Так ты избежишь кучи ошибок во время отладки (особенно если при работе с файлами плаваешь).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разложить число на цифры Dog Помощь студентам 10 09.05.2011 12:16
Си++. Вставить в массив элемент в нужную строку hen Помощь студентам 10 08.06.2009 22:27
Разложить Сапёра Arigato Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 23.11.2008 15:45
выделить в одномерный массив строку матрицы с максимальном элементом 7karandashik7 Паскаль, Turbo Pascal, PascalABC.NET 9 03.07.2008 14:43
Как перевести строку из чисел в массив? Andris Паскаль, Turbo Pascal, PascalABC.NET 7 21.09.2007 17:12