[ mehanizamm @ 28.12.2008. 19:10 ] @
Jel postoji funkcija koja bi odsekla string do prvog blanko raznaka?? string:='odsecanje stringa sleva do prvog blanko razmaka'; a da dobijem string:='odsecanje'; |
[ mehanizamm @ 28.12.2008. 19:10 ] @
[ X Files @ 28.12.2008. 19:31 ] @
Pogledaj funkcije: LeftStr() i AnsiPos().
// Borland C++ Builder kod, pod uslovom da 100% postoji blanko. Code: #include <StrUtils.hpp> void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString Stari = "odsecanje stringa sleva do prvog blanko razmaka"; AnsiString Novi = LeftStr( Stari, AnsiPos( " ", Stari ) ); ShowMessage( Novi ); } ... ako ne znas da li postoji blanko, prvo to proveri (AnsiPos( " ", Stari )) pa tek onda idi u funkciju. [ mehanizamm @ 28.12.2008. 19:40 ] @
Jel postoje takve funkcije za Lazarus??
[ X Files @ 28.12.2008. 19:41 ] @
^
Ili, Pascal kod (valjda): Code: procedure TForm1.Button1Click(Sender: TObject); var Stari, Novi : string; begin Stari := 'odsecanje stringa sleva do prvog blanko razmaka'; Novi := LeftStr( Stari, AnsiPos( ' ', Stari ) - 1 ); ShowMessage( '>' + Novi + '<'); end; (dodao sam -1, da ne bi jedan suvisni blanko ostao na desnoj strani) [ X Files @ 28.12.2008. 19:45 ] @
^
To su obicne VCL funkcije. Ima ih u Help-u. Jedino ne znam da li je potrebno dadati u uses i StrUtils. [ mehanizamm @ 28.12.2008. 19:50 ] @
Hvala to mi je trebalo..
[ X Files @ 28.12.2008. 19:55 ] @
Ipak, ne zaboravi da proveris sta vraca AnsiPos()...
Code: pozicija := AnsiPos( ' ', Stari ); if pozicija > 0 then begin Novi := LeftStr( Stari, pozicija-1 ); ShowMessage( '>' + Novi + '<'); end; [ Nikolavlasotince @ 01.01.2009. 01:19 ] @
Code: S := 'odsecanje strina'; S := Copy(S, 1, pos(' ', S) - 1); //ovde S dobija vrednost 'odsecanje' nadam se da si na to mislio [ mehanizamm @ 04.01.2009. 09:45 ] @
Imam problem sa izmenom podataka u bazi..
Koristim Mysql bazu imam tabelu lica (id, ime, prezime). E sad kako da formiram upit da mi izmeni podatke ja sam ovako radio al uvek mi javlja grske!! gde gresim?? Code: upit := 'UPDATE lica SET '; upit := upit + 'ime=' + edt_ime.text + ',prezime=' + edt_prezime.text; upit := upit + ' WHERE id=' + QuotedStr(edt_id.text); query.Close; query.SQL.Clear; query.sql.text:=upit; query.Open; [ Bojan Kopanja @ 04.01.2009. 10:28 ] @
Koju gresku dobijas?
Verovatno umesto query.Open trebas da koristis query.ExecSQL, samo pretpostavljam posto nisi naveo gresku koju si dobio :). [ mehanizamm @ 04.01.2009. 10:53 ] @
Greske
Kad koristim query.open Citat: Project izmena raised exception class 'EDatabaseError' with message: :Cannot open a non-select statement Kad koristim query.execSQL Citat: Project izmena raised exception class 'EDatabaseError' with message: :Error executing query: Unknown column 'jugoslav' in 'field list' [ mr.zhile @ 04.01.2009. 13:06 ] @
probaj umesto
upit := upit + 'ime=' + edt_ime.text + ',prezime=' + edt_prezime.text; napisi upit := upit + 'ime=' + QuotedStr(edt_ime.text) + ',prezime=' +QuotedStr(edt_prezime.text); Prati debagovanje i vidi kakva je vrednost stringa upit... Probaj da izvrsis takav upit u nekom od programa gde si kreirao bazu [ mehanizamm @ 04.01.2009. 13:58 ] @
Hvala..
Dobitna kombinacija.. upit := upit + 'ime=' + QuotedStr(edt_ime.text) + ',prezime=' +QuotedStr(edt_prezime.text); query.ExecSQL Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|