Текущий архив: 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