Главная страница
    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.5 MB
Время: 0.038 c
15-1137765344
вразлет
2006-01-20 16:55
2006.02.12
Пластиковые карточки на Укр@ине


2-1138384768
Erudit
2006-01-27 20:59
2006.02.12
Как открыть с помощью FileOpen?


2-1138316384
Glex
2006-01-27 01:59
2006.02.12
I/O error 105! Простейший, казалось бы, код...


1-1136800132
M_Alex
2006-01-09 12:48
2006.02.12
как приостановить и возобновить выполение процедуры


1-1136963779
BANick
2006-01-11 10:16
2006.02.12
Алгоритм создания SFV





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский