[ 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';
[ 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