Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.12;
Скачать: CL | DM;

Вниз

Поиск символа в строке.   Найти похожие ветки 

 
WestBronx   (2006-01-27 13:53) [0]

Привет, пытаюсь написать конфиг для программы, проблемма в следующем.
Скажем есть переменная n, типа string, со значением "time=55".
Подскажите, как обрезать все символы до "=" (т.е. time), занести их во временную переменную q, далее, обрезать значение после знака "=" (т.е. 55), занести в переменную w.


 
Бася   (2006-01-27 13:55) [1]

Нужно применять функцию Pos, insert....


 
Johnmen ©   (2006-01-27 14:01) [2]

Какие операции со строковыми переменными ты уже знаешь?


 
WestBronx   (2006-01-27 14:07) [3]

Непонимаю, как этим воспользоваться, insert если не изменяет память вставляет строку в строку.

Может поможете кодом?


 
Johnmen ©   (2006-01-27 14:08) [4]

Помоги себе сам, спроси у F1.


 
WestBronx   (2006-01-27 14:09) [5]

Johnmen ©   (27.01.06 14:01) [2]
Многие, но не те которые мне нужны в данном случаи =/
Можно по идеи разбить string на чар, и по байтно считать символы, как только попадаеться "=", обрезать. Но это слишком геморойно писать.
Может подскажите чего?


 
WestBronx   (2006-01-27 14:12) [6]

Johnmen ©   (27.01.06 14:08) [4]
F1, помогает только тогда, когда знаешь чего тебе конкретно нужно. В моём случаи он бесполезен.
"Помоги себе сам", что вы делаете с таким вероисповеданием на форуме для новичков? %) Да и вообще на форуме?


 
umbra ©   (2006-01-27 14:14) [7]

В делфи специально для этого есть компонент TIniFile.


 
dabreezy   (2006-01-27 14:15) [8]

Злые вы все :) Вот код:

procedure TForm1.Button1Click(Sender: TObject);
var
 s: string;
 q,w: string;
 i,flag: byte;
begin
 s:="time=55";
 q:="";w:="";
 flag:=0;
 for i:=1 to length(s) do
   begin
     if (s[i]<>"=") and (flag=0) then q:=q+s[i];
     if (s[i]<>"=") and (flag=1) then w:=w+s[i];
     if (s[i]="=") then      flag:=1;
   end;
 //q=time   w=55

end;


 
WestBronx   (2006-01-27 14:17) [9]

umbra ©   (27.01.06 14:14) [7]
Свой написанный - ближе к сердцу %)
И разбираться далее легче.
Там по идеи пустяк написать.


 
Johnmen ©   (2006-01-27 14:17) [10]

>dabreezy   (27.01.06 14:15) [8]

Что полезного можно вынести из этого "кода"?


 
Бася   (2006-01-27 14:19) [11]

Не падай духом! Я сам новичок в программировании. Нигде не учился - все  сам!

Если не понимаешь, то это плохо...
Открой любую книгу по Паскаль, открой первые страницы и читай раз 20!
Даю слово, запомнишь!

Ну раз разговор пошёл....
Смотри...

Бросай на форму два компонента label, один компонент Edit1 и кнопку button1.

В обработчике для кнопки (клацни два раза на ней) пиши так:
procedure TForm1.Button1Click(Sender: TObject);
var
 i,d: integer;
 st: string;
begin
 st:= Edit1.Text; //в переменную st загоняем слово в Edit1.
 for i:=0 to length(st)do //от начала до конца строки...
 label1.Caption:=st; //в label1 перегоним переменную st...
 d:=Pos("test",st); //найдём в строке stб подстроку "test"
 label2.Caption:=IntToStr(d); //покажем номер позиции искомого фрагмента
end;

По такому принципу и шагай и всё у тебя получится! Главное - читай внимательно и пытайся. Научиться можно только программируя самос тоятельно!
Удачи!!! :))))))))


 
dabreezy   (2006-01-27 14:19) [12]

То что написал я его быстрее чем открыл бы справку :)
Тем более он работает


 
WestBronx   (2006-01-27 14:23) [13]

dabreezy   (27.01.06 14:19) [12]
Спасиб ;)


 
Johnmen ©   (2006-01-27 14:25) [14]

>Бася   (27.01.06 14:19) [11]
>Открой любую книгу по Паскаль, открой первые страницы и читай раз 20!
>Даю слово, запомнишь!

Золотые слова!


 
umbra ©   (2006-01-27 14:26) [15]

2 WestBronx   (27.01.06 14:17) [9]

так ведь можно изучть код имеющегося класса, почитать документацию. А если что-то не нравится - создать потомка, в котором добавить недостающие возможности или изменить существующие. Легче переделать имеющийся правильный код, чем писать новый с нуля.


 
Бася   (2006-01-27 14:34) [16]

Господа мы уходим от темы. Человек который только познаёт азы Дельфей, хочет понять но не может! Ему рациональней было бы изучить, чем копировать чужое, не понимая его сущность.

А на счет золотоых слов, то это истинная правда!
А хотя, эт Ваше право голоса, я всего лишь хотел помочь, и вселить в новичка силы!

До встречи!


 
umbra ©   (2006-01-27 15:06) [17]

собственно по теме:


function ExtractValue(s, delimiter: string): string;
var
 DelimPos, ValueLen: integer;

begin
 DelimPos := LastDelimiter(delimiter, s);
 ValueLen := Length(s) - DelimPos;
 Result := RightStr(s, ValueLen);
end;
{....................................................}
val := ExtractValue(s, "=");
{....................................................}



 
Бася   (2006-01-27 20:17) [18]

Как оказалось, действительно по теме. Если кого обидел - лично приношу извинения.


 
Glex ©   (2006-01-27 20:28) [19]

TIniFiles example:


uses IniFiles;
....
procedure TForm1.FormCreate(Sender: TObject);
var Ini: TIniFile;
begin
 ProgName:= Application.Title;
 Ini := TIniFile.Create("bkrnd.ini");
 try
 Settings.FormLeft:= Ini.ReadInteger("Interface","Form1.Left", 800);
 Settings.FormTop:= Ini.ReadInteger("Interface", "Form1.Top", 100);
 if Settings.FormLeft>Screen.WorkAreaWidth-Form1.ClientWidth then Settings.FormLeft:=Screen.WorkAreaWidth-Form1.ClientWidth;
 if Settings.FormTop>Screen.WorkAreaHeight-Form1.ClientHeight then Settings.FormTop:=Screen.WorkAreaHeight-Form1.ClientHeight;
 Settings.Skin:= Ini.ReadInteger("Interface", "Skin", 0);
 Settings.Lang:= Ini.ReadInteger("Interface", "Lang", 0);
 Settings.AlphaBlendValue:= Ini.ReadInteger("Interface", "AlphaBlendValue", 220);
 Settings.AlphaBlend:= Ini.ReadBool("Interface", "AlphaBlend", false);
 Settings.StayOnTop:= Ini.ReadBool("Interface", "StayOnTop", true);
 Settings.RandomizerSettings.TwoA:= Ini.ReadBool("Randomizer Settings", "TwoA", false);
 Settings.RandomizerSettings.AI:= Ini.ReadBool("Randomizer Settings", "AI", true);
 Settings.RandomizerSettings.ThreeD:= Ini.ReadBool("Randomizer Settings", "ThreeD", false);
 Settings.MiniMode:= Ini.ReadBool("Interface", "MiniMode", false);
 Settings.RandomizerSettings.AutoGen:= Ini.ReadBool("Randomizer Settings", "AutoGen", false);
 Settings.RandomizerSettings.AutoGenTime:= Ini.ReadInteger("Randomizer Settings", "AutoGenTime", 750)
 finally
   Ini.Free;
 end;
 Form1.DoubleBuffered:= true;
end;
....
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var Ini: TIniFile;
begin
RefreshSettings;
Ini := TIniFile.Create("bkrnd.ini");
try
 Ini.WriteInteger("Interface", "Form1.Top", Top);
 Ini.WriteInteger("Interface", "Form1.Left", Left);
 Ini.WriteInteger("Interface", "Skin", Settings.Skin);
 Ini.WriteInteger("Interface", "Lang", Settings.Lang);
 Ini.WriteInteger("Interface", "AlphaBlendValue", Settings.AlphaBlendValue);
 Ini.WriteBool("Interface", "MiniMode", Settings.MiniMode);
 Ini.WriteBool("Interface", "AlphaBlend", Settings.AlphaBlend);
 Ini.WriteBool("Interface", "StayOnTop", Settings.StayOnTop);
 Ini.WriteBool("Randomizer Settings", "TwoA", Settings.RandomizerSettings.TwoA);
 Ini.WriteBool("Randomizer Settings", "AI", Settings.RandomizerSettings.TwoA);
 Ini.WriteBool("Randomizer Settings", "ThreeD", Settings.RandomizerSettings.TwoA);
 Ini.WriteBool("Randomizer Settings", "AutoGen", Settings.RandomizerSettings.AutoGen);
 Ini.WriteInteger("Randomizer Settings", "AutoGenTime", Settings.RandomizerSettings.AutoGenTime);
finally
 Ini.Free;
 end;
end;


Собственно, Ini-Файл:
[Interface]
Form1.Top=246
Form1.Left=373
Skin=0
Lang=0
AlphaBlendValue=245
MiniMode=0
AlphaBlend=1
StayOnTop=1
[Randomizer Settings]
TwoA=1
AI=1
ThreeD=1
AutoGen=1
AutoGenTime=5000


В коде немного нужного только моей проге, но, думаю, разберёшься ))


 
WestBronx   (2006-01-27 21:29) [20]

Спасибо всем за ответы, но dabreezy мне уже помог ;)
Всё равно спасибо за проявленный интерес ;)



Страницы: 1 вся ветка

Текущий архив: 2006.02.12;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.062 c
15-1136841596
Profi
2006-01-10 00:19
2006.02.12
А вам не кажется, что наступает "Послезавтра"?


9-1125143823
DR0N
2005-08-27 15:57
2006.02.12
Лампочки...


3-1134130898
Explorer
2005-12-09 15:21
2006.02.12
Проблема с запросом - выборка из одной таблицы


6-1130963292
xman
2005-11-02 23:28
2006.02.12
PING


15-1138065996
vidiv
2006-01-24 04:26
2006.02.12
Проблема с HTML