Widzisz odpowiedzi znalezione dla zapytania: pierwszy znak
Temat: Niezgodnosc typow (blad)
"WiteK" <witek@wp.plwrote in message
No dobrze, ale problem w tym ze nie wiem jak sprawdzic poprawność (czy
jest
to prawidlowa liczba) oraz jak dokonac konwersji. Moze to jest proste ale
jak juz mowilem jestem bardzo poczatkujacy :(. Prosze o jakies instrukcje.
Może ten krótki przykład coś rozjaśni:
#include <stdio.h
#include <stdlib.h
int main(int argc, char* argv[])
{
/* Bufor na wczytana liczbe. */
char buffer[1024];
/* Wczytana liczba. */
long number;
/* Pomocniczy wskaznik. */
char* koniec;
/* Wczytujemy liczbe jako napis. */
scanf("%s", buffer);
/*
Konwertujemy liczbe zapisana w systemie
dziesietnym w buforze na liczbe calkowita.
Do zmiennej koniec jest wpisywany adres pierwszego
znaku, ktory nie zostal przeksztalcony.
*/
number = strtol(buffer, &koniec, 10);
/* Sprawdzamy, czy konwersja sie udala. */
if(*koniec != ' ')
printf("Nie podales prawidlowej liczby!
");
else
printf("%ld
", number);
}
Pozdrawiam!
Marcin
Temat: ciąg znaków - wskaźnik co zmiennej typu char
Użytkownik euro2 <marte@box43.gnet.plw wiadomości do grup dyskusyjnych
napisał:9su9cm$1q@flis.man.torun.pl...
c = get_d(); // a nie c = get_d;
poza tym wszystkie te konstrukcje są pełne błędów. Np. wskaźnik d w
get_d()
jest zmienną lokalną, jaki sens go zwracać, jeśli ginie poza jej zasięgiem
(dostajesz ślepe wskazanie).
wskaznik ginie ale nie ginie wartosc na ktora on wskazuje
Również przypisania typu
d = "costam";
są niepoprawne, choć może dać się skompilować.
sa jak najbardziej poprawne, sam tekst "costam" jest ciagiem znakow
umieszczonym w jakims kawalku pamieci read only np segmencie danych
czy dodatkowym (zaden stos czy sterta), kawalek ten jest traktowany przez
kompilator jako const char *, nastepnie operator= przypisze adres pierwszego
bajtu do zmiennej d
Wskaźnik odnosi się do
konkretnego miejsca w pamieci, wiec przypisanie powyższe spowoduje że
wartością wskaźnika d będzie adres anonimowego ciągu "abcd" (nigdzie nie
rezerwujesz pamięci na tę zmienną).
w tym przypadku nic nie trzeba rezerwowac i wartoscia wskaznika nie bedzie
zaden anonimowy ciag
Wynika to stąd, że char* nie jest czymś
w rodzaju string w Pascalu, ale wskaźnikem do pierwszego znaku ciągu.
prawda, ale przeanalizuj ten prosty przyklad jeszcze raz
Tomek
Temat: problem z char *wsk
"o^hm" <greg@poczta.onet.plwrote in message
Zadanie proste ale jeszcze nie radze sobie w 100% ze wskażnikami,
dlatego prosze o pomoc.
char *wsk = {"jakis tekst"};
(można opuszcać klamry ????)
Przy pomocy takiej deklaracji jak powyzej tworzysz jednoczesnie
dwie rzeczy: statyczna tablice znakow "jakis tekst" oraz wskaznik
do pierwszego znaku z tej tablicy. Nazwa kazdej tablicy wskazuje
na adres jej pierwszego elementu, podobnie w tym przypadku, tylko
ze tu nazwą jest sama "definicja" statycznej tablicy. Klamerek nie
musisz stosowac, chyba ze dla przypomnienia, ze "jakis tekst" jest
tablicą :)
Na marginesie, zwroc uwage na okreslenie *statyczna* tablica.
To jest wazne, bo takich tablic raczej nie powino sie bezposrednio
modyfikowac - lepiej zrobic kopie, tak jak w przykladach kolegow.
Maciej
Temat: Klawisze w Unixie
Hello Neurobasher
On 06-Cze-99, you wrote:
wcisnieto ESC... funkcje wlaczajaca i wylaczajaca mozemy zdefiniowac np. tak:
Zaimplementowalem (czytaj przepisalem :)) kod, ktory podeslales - dziala :)).
Mialem problem z ESC - ale sobie poradzilem :-))))). Jesli pierwszym znakiem
bylo 27 to ustawialem flage O_NONBLOCK (tak jak to bylo z O_NDELAY w twoim kodzie
:)), nastepnie zczytywalem znak i przywracalem poprzednie ustawienia. Problem
pojawil sie przy zczytywaniu drugiego znaku - zarowno "read" jak i "getch"
zawsze zwracaly "-1", dopiero jak uzylem "getchar" zadzialalo :).
jednakze cursesy chyba maja taka funkcje juz wbudowana...
W curses nie ma :( - jest w ncurses.
Regards
Przeglądaj wszystkie wypowiedzi z tego tematuTemat: fieldbyname - pomoc
| Co oznacza pierwszy cyfra?
Indeks pierwszego znaku, druga to liczba znakow do skopiowania.
--
-------------------------------------
Aleksander Sztwiertnia
Dzięki wszystkim za wytłumaczenie i poszerzenie mjej wiedzy. :-))
Hubert
Temat: Problem z DbEdit-ami
Witam, mam taki problem z DbEditami w D7 Ent ze wszystkimi zainstalowanymi
z Borlanda poprawkami.
Wrzucam na formę DateTimePicker oraz 2 DBEdity. Jeden przechowuje datę,
drugi przechowuje cokolwiek, np. dowolną liczbę.
Pobieram zawartość daty do pierwszego DBedita:
DBedit1.Text:=DateToStr(DateTimePicker(date));
Następnie chcę coś wpisać w DBedit2 ręcznie - i co się dzieje - po wpisaniu
pierwszego znaku w DBedit2 znika zawartość DBEdit1 !!!
Potem już można bez problemu wpisać zawartość DBEdit1 jeszcze raz
wybierając datę z DateTimePicker-a i już jest OK. Tak nie może być,
ponieważ wypełnionych pól mam dużo i szlag mnie trafia, jak jakiś dbEdit
muszę zmodyfikować ręcznie. Wtedy wiem, że zaraz mi wszystko zniknie.
Debadżer nie wykazuje żadnej akcji, która mogłaby powodować znikanie tych
pól.
Nie mam ustawionych procedur onChange, onExit ani żadnych innych.
Wydawałoby się, ze właściwość AutoEdit powinna załatwić sprawę, jednak tak
nie jest.
Czy ktoś się z tym spotkał już kiedykolwiek, bo mi ręcę opadają?
Temat: Problem z DbEdit-ami
Witam, mam taki problem z DbEditami w D7 Ent ze wszystkimi zainstalowanymi
z Borlanda poprawkami.
Wrzucam na formę DateTimePicker oraz 2 DBEdity. Jeden przechowuje datę,
drugi przechowuje cokolwiek, np. dowolną liczbę.
Pobieram zawartość daty do pierwszego DBedita:
DBedit1.Text:=DateToStr(DateTimePicker(date));
Następnie chcę coś wpisać w DBedit2 ręcznie - i co się dzieje - po wpisaniu
pierwszego znaku w DBedit2 znika zawartość DBEdit1 !!!
Potem już można bez problemu wpisać zawartość DBEdit1 jeszcze raz
wybierając datę z DateTimePicker-a i już jest OK. Tak nie może być,
ponieważ wypełnionych pól mam dużo i szlag mnie trafia, jak jakiś dbEdit
muszę zmodyfikować ręcznie. Wtedy wiem, że zaraz mi wszystko zniknie.
Debadżer nie wykazuje żadnej akcji, która mogłaby powodować znikanie tych
pól.
Nie mam ustawionych procedur onChange, onExit ani żadnych innych.
Wydawałoby się, ze właściwość AutoEdit powinna załatwić sprawę, jednak tak
nie jest.
Czy ktoś się z tym spotkał już kiedykolwiek, bo mi ręcę opadają?
sory ze sie wcinam z pytaniem ale co zrobiłeś ze :
---Następnie chcę coś wpisać w DBedit2 ręcznie - i co się dzieje - po wpisaniu
pierwszego znaku w DBedit2 znika zawartość DBEdit1 !!! -----------
jak zrobić zebym mógł pisać w dbedit bo za nic nie mogę nic napisać tylko
słychać dzwięk
Pozdrawiam
Temat: Problem z DbEdit-ami
Dnia 4 Jul 2006 15:43:27 +0200, robert napisał(a):
[...]
sory ze sie wcinam z pytaniem ale co zrobiłeś ze :
| ---Następnie chcę coś wpisać w DBedit2 ręcznie - i co się dzieje - po wpisaniu
| pierwszego znaku w DBedit2 znika zawartość DBEdit1 !!! -----------
jak zrobić zebym mógł pisać w dbedit bo za nic nie mogę nic napisać tylko
słychać dzwięk
DBedit jest powiązany z tabelą i z datasource - w końcu słowo Edit oznacza,
że tam można wpisywać dane. Być może masz tabelę tylko do odczytu.
Temat: Problem z DbEdit-ami
Rafał Kubiak wrote:
Witam, mam taki problem z DbEditami w D7 Ent ze wszystkimi zainstalowanymi
z Borlanda poprawkami.
Wrzucam na formę DateTimePicker oraz 2 DBEdity. Jeden przechowuje datę,
drugi przechowuje cokolwiek, np. dowolną liczbę.
DBedit nic nie przechowuje. DBEdit pokazuje bądź pozwala na edycję
danych z tabeli.
Następnie chcę coś wpisać w DBedit2 ręcznie - i co się dzieje - po wpisaniu
pierwszego znaku w DBedit2 znika zawartość DBEdit1 !!!
A nie są połączone z tym samym polem danych?
Temat: CheckBox w DBGridzie jako oznaczenie SelectedRows
Bartek Dajewski wrote:
Nie do stringów, tylko do tego, co wygeneruje komponent TDataSet. Zakładkę
raczej należy traktować jako wskaźnik do nieznanej bliżej zawartości. To, że
Delphi rezerwuje pamięć na zakładki tak samo jak na stringi nie zmienia
faktu, że nie przechowuje tam niczego, co miałoby coś wspólnego ze
stringiem.
A ja się upieram przy swoim. Zakładka to wskaźnik do pierwszego znaku w
"null-terminated string".
Jaka jest zawartość tego ciągu - to już inna bajka. Nam wystarczy, że
jednoznacznie identyfikuje rekord i BDE potrafi zrobić z tego użytek.
Tutaj uwaga: nie dla każdej tabeliquery można uzyskać stabilne
zakładki.
Bo to kosztuje pamięć i czas (pisałem o optymalizacji). Zamiana 32-bitowej
liczby na string to morderstwo i w przypadku optymalizacji pamięci i
wydajności.
OK. Ja jednak uważam, że zawsze należy założyć, iż zaznaczonych rekordów
będzie dużo. A poza tym jestem wygodny - StringList sam za mnie sortuje.
I nie muszę zwalniać każdego elementu z osobna przed zwolnieniem listy.
A w czym TStringList jest lepszy od TList (nie licząc szybkiego
wyszukiwania, o czym pisałem wcześniej)?
A może po prostu wykorzystać TBookmarkList?
Chociaż... zabawa z zakładkami robi się niebezpieczna np. przy zmianie
indeksu. Lepiej jednak zrobić to ręcznie.
Artur
Temat: CheckBox w DBGridzie jako oznaczenie SelectedRows
Cześć,
Artur Stuczynski napisał(a) w wiadomości:
<391FFA0B.BD530@blue.profex.com.pl...
Ależ ja nie kłócę się o to, czym jest string :)
BDE, aby zrobić skok do wybranego rekordu, musi dostać pewną wartość,
która jednoznacznie ten rekord identyfikuje.
Większa część BDE została napisana w C i stąd taka konwencja: wskaźnik
do pierwszego znaku, całość zakończona #0, żeby widzieć, gdzie się
kończy. To wszystko.
Zrób eksperyment: dla tabeli pdx z kluczem i indeksem ustawionym na ten
klucz, załóż zakładkę i wyświetl sobie zawartość "stringa", poczynając
od punktu, na który wskazuje zakładka, kończąc przed pierwszym
napotkanym #0.
---
Naprawdę nie chcę się spierać o słówka, ale to może kogoś wprowadzić w błąd.
Zakładka dla danej tabeli ma, w odróżnieniu od zmiennej PChar, zawsze tę
samą długość (rozmiar zajmowanej pamięci) i nie jest on zaznaczany #0 tylko
zwracany przez wirtualną metodę TTable.GetBookmarkSize (albo jakoś
podobnie). Całość nie jest zakończona zerem, bo jeżeli zawiera np. rekord,
to w nim #0 może wystąpić w dowolnym miejscu.
Wyniki eksperymentu:
(D3, tabela paradox, klucz typu LongInt, Bkm : TBookmark = GetBookmark)
PChar(Bkm)^,20 = #0, #0, #0, #0, 'Ĺ°', #2, #0, #0, #12, #0, 'Ë', #7, #0,
#0, #0, #0, ' ', #0, #0, #9
---
Pozdrawiam :-)
Bartek
Temat: cos w rodzaju dbgrida
Zna ktos moze jakis dzialajacy pod D5 darmowy komponent w rodzaju dbgrida
ktory umozliwia jedna rzecz: wyswietlanie pola mem w paru liniach?
Niepotrzebna mi jest zadna edycja czy inne bajery tylko samo wyswietlanie.
Sam umiem wyswietlic w zwyklym dbgridzie tekst z memo ale tylko w jednej
linni (np wyswietlam tylko do pierwszego znaku konca linii). Widzialem w
jakims programiku napisanym w Delphi ze da sie zrobic cos takiego ale nie
udalo mi sie znalezc jakiegos komponentu ktory to potrafi. Ewentualnie
moglby mi ktos powiedziec jak samemu mozna zrobic cos takiego? Z gory dzieki
GUZ
Temat: cos w rodzaju dbgrida
Zna ktos moze jakis dzialajacy pod D5 darmowy komponent w rodzaju dbgrida
ktory umozliwia jedna rzecz: wyswietlanie pola mem w paru liniach?
Niepotrzebna mi jest zadna edycja czy inne bajery tylko samo wyswietlanie.
Sam umiem wyswietlic w zwyklym dbgridzie tekst z memo ale tylko w jednej
linni (np wyswietlam tylko do pierwszego znaku konca linii). Widzialem w
jakims programiku napisanym w Delphi ze da sie zrobic cos takiego ale nie
udalo mi sie znalezc jakiegos komponentu ktory to potrafi. Ewentualnie
moglby mi ktos powiedziec jak samemu mozna zrobic cos takiego? Z gory
dzieki
Standardowy DBCtrlGrid nie może być?
Pozdrawiam ... Miroo
Temat: Grupowanie w SQL
Witam
Dziekuje za odpowiedzi o funkcji CAST w LocalSQL.
Pojawil sie kolejny problem.
Jezeli zamienie Integer na String (funkcja CAST) i wytne pierwszy znak
(Substring) jest wszystko OK. A powiedzcie jak zrobic teraz grupowanie wg.
wycietego pierwszego znaku.
Zdrowko
Przemek
p.zakrzew@multispedytor.com.pl
Temat: Grupowanie w SQL
Przemek Zakrzewski napisał(a):
Witam
Dziekuje za odpowiedzi o funkcji CAST w LocalSQL.
Pojawil sie kolejny problem.
Jezeli zamienie Integer na String (funkcja CAST) i wytne pierwszy znak
(Substring) jest wszystko OK. A powiedzcie jak zrobic teraz grupowanie wg.
wycietego pierwszego znaku.
Może tak:
SELECT DISTINCT(Pole) FROM ...
Można też:
SELECT pole as Nazwa FROM ... GROUP BY Nazwa
Temat: select-kiedy koniec
Czy mozna uzyskać informacje o zakończeniu select ?
W jaki sposób z selecta wyciągnąć informacje o znalezionych rekordach
dotyczących np nazwy firmy - konkretnie jej pierwszego znaku w nazwie
(tak żeby pó niej w TabControl odpowiednie zakładki z pierwszą literą nazwy firmy były nieaktywne
jesli nie ma zadnej firmy zaczynającej się od tej litery)
Przeglądaj wszystkie wypowiedzi z tego tematu
Temat: Filtrowanie w tabeli dBase
Cześć.
Mam taki problem.
Na formatce jest edit, do którego jest ustawione zdarzenie OnChange
takie, ze każde naciśnięcie klawisza powoduje filtrowanie w tabeli pod
względem dwóch kolumn.
Tabela.Filter:='NAZWA='+#39+edtSearch.Text
+#42+#39+#32+'or'+#32+'OPIS='+#39+edtSearch.Text+#42+#39
Wszystko ładnie pięknie chodzi tylko, że ja chciałbym filtrować wg
dowolnego ciągu znaków, niekoniecznie zaczynając od pierwszego znaku,
czyli tak:
Tabela.Filter:='NAZWA='+#39+#42+edtSearch.Text
+#42+#39+#32+'or'+#32+'OPIS='+#39+#42+edtSearch.Text+#42+#39
Próbowałem również Query
Query1.SQL.Add('SELECT * FROM Tabela WHERE Nazwa LIKE =
'+#39+'%'+edtSearch.Text+'%'+#39+' OR Opis LIKE =
'+#39+'%'+edtSearch.Text+'%'+#39;
Query1.Active:=True;
Ale to wogóle nie daje żadnych efektów
Poradźcie coś proszę.
Temat: Funkcja POS - czy jest optymalna?
Zadanie jest takie: odlalezc pozycje ciagu n znakow w ciagu o m-znakach.
Problemu nie ma: Pozycja := Pos(); i po sprawie.
Testowalem jednak te funkcje przy n=40 m=600 000 000 i wyniki nie sa
zadowalajace.
Nie posiadam zrodel (Delphi 5 std - 'gazetowa') POS'a i nie wiem jakim
algorytmem operuje sie w tej funkcji i czy ma sens pisanie wlasnej wersji
operujacej np KMP lub Boyer/Moor'em li to innych.
Witam
Algorytm Pos jest prosty:
1. najpierw sprawdza. czy n m; jeśli tak, to nie ma sensu sprawdzać dalej.
2. Następnie w ciągu m (od pozycji 1 do m-n+1) wyszukiwany jest pierwszy
znak z n. Jeśli tak, to nastepnie porównywanych jest n kolejnych znaków; gdy
i teraz nie będzie się zgadzać, to wyszukiwanie pierwszego znaku n
kontynuowane jest od pozycji różniącej ciąg n od badanego wcześniej podciągu
m.
Wniosek z tego taki, że jeśli zależy nam na szybkości, to warto napisać
własną funkcję Pos.
Pozdrawiam,
Chizra.
Temat: Funkcja POS - czy jest optymalna?
In article <ai2lq2$93@news.tpi.pl, chi@wp.pl says...
1. najpierw sprawdza. czy n m; jeśli tak, to nie ma sensu sprawdzać dalej.
2. Następnie w ciągu m (od pozycji 1 do m-n+1) wyszukiwany jest pierwszy
znak z n. Jeśli tak, to nastepnie porównywanych jest n kolejnych znaków; gdy
i teraz nie będzie się zgadzać, to wyszukiwanie pierwszego znaku n
kontynuowane jest od pozycji różniącej ciąg n od badanego wcześniej podciągu
m.
Hmmm, z tego opisu wynika ze jest to metoda mastodonta. I wnioskuje to
Pan na podstawie zrodel? Otrzymalem tresc Pos-a od grupowicza (za ktore
dziekuje), i bede musial przegryzc sie przez asm i wlasnie jestem na
etapie rozgryzania.
Wniosek z tego taki, że jeśli zależy nam na szybkości, to warto napisać
własną funkcję Pos.
Trzeba bedzie...
Temat: taka sobie aplikacja
Dnia 2004-03-08 11:46 użytkownik Juhas wspólnie i w porozumieniu z
klawiaturą, na szkodę ogółu, nastukał:
Nie chciałem tworzyć nowego wątku.
Ja z kolei jestem ciekawy jak działają aplikacje typu Easy Recovery.
Odzyskują usunięte z dysku pliki...
O ile się nie myle to usunięcie pliku polega na zmienienie pierwszego
znaku nazwy tego pliku na... (chyba tyldę). Wystarczy, że w FAT
poszukasz takich plików, sprawdzisz gdzie leżały ich kawałki, poskładasz
do kupy i jak nic nie było nadpisane to masz plik.
Temat: Zapis i odczyt pliku z danymi.
Dnia 2004-02-13 22:07 użytkownik Wodzu wspólnie i w porozumieniu z
klawiaturą, na szkodę ogółu, nastukał:
Witam,
Chcialbym utworzyc plik rekordowy ale taki aby znajdowaly sie w nim rekordy
roznych typow.
Np 50 rekordow zawierajacych pola typu integer i 25 rekordow zawierajacych
pola typu string.
Czy jest to mozliwe?
Jesli tak to prosilbym o krotki przyklad jak to zrobic...
1. Może użyj plików ini (TIniFile) ???
2. Taki format pliku:
<typ pola(np 1 bajt)
<dane
<typ pola(np 1 bajt)
<dane
Czyli np gdy TypPola = 0 to znaczy, że dalej jest Integer, jeżeli
TypPola=1 to znaczy, że dalej jest String (gdzie pierwszym znakiem -
pierwsze X bajtów zajmuje długość Stringa - żebyś wiedział ile
przeczytać)...
3. Uzycie rekordu (mało opłacalne - żre dużo miejsca i musisz znać max
długość stringu):
type
TDana = record
case Typ : Byte of
0 : (Liczba : Integer);
1 : (Tekst : String[100]);
end; //TDana
Problem w tym, że MUSISZ określić długość Stringa, no i zawsze ten
rekord będzie zajmował tyle ile największy podrekord !!! Tutaj, nie
ważne czy będziesz trzymał Liczbę czy Tekst to zawsze wielkość = 101
bajtów (100 na stringa i 1 na typ).
A zapisujesz do pliku jak zwykły plik : file of TDana;
Temat: Konwersja ze string na array of char i odwrotnie
Dnia 12/29/2007 12:18 PM, Użytkownik zpksoft napisał:
Zadeklarowałaś T oraz S jako string,
po czym użyłaś instrukcji podstawienia.
Podobnie:
var i, j: integer;
i:=5;
j:=i;
inc(j);
ile jest i? (oczywiście 5 :)
var s, t : String;
pc : PChar;
begin
s := 'Ala ma kota'; // wiadomo
pc := @s[1]; // zapamiętuje adres do pierwszego znaku w S
t := s; // "kopiuje" tekst do t
pc^ := 'O'; // ustawiam wartość pierwszego znaku w S
showmessage(t); // wyświetlam teoretycznie nie zmieniony tekst ;p
end;
Jaką wartość ma "t", którego formalnie nie zmieniałem i dlaczego nie
jest to już Ala? ;)
Temat: Konwersja ze string na array of char i odwrotnie
dziobu pisze:
Dnia 12/29/2007 12:18 PM, Użytkownik zpksoft napisał:
Zadeklarowałaś T oraz S jako string,
po czym użyłaś instrukcji podstawienia.
Podobnie:
var i, j: integer;
i:=5;
j:=i;
inc(j);
ile jest i? (oczywiście 5 :)
var s, t : String;
pc : PChar;
begin
s := 'Ala ma kota'; // wiadomo
pc := @s[1]; // zapamiętuje adres do pierwszego znaku w S
t := s; // "kopiuje" tekst do t
pc^ := 'O'; // ustawiam wartość pierwszego znaku w S
showmessage(t); // wyświetlam teoretycznie nie zmieniony tekst ;p
end;
Jaką wartość ma "t", którego formalnie nie zmieniałem i dlaczego nie
jest to już Ala? ;)
To skoro już zajmujemy się współdzielonymi instancjami zmiennych
lifetime managed, powtórzcie te same testy z *dynamicznymi* tablicami
array of char.
var
s, t: array of char;
...
SetLength(S, ...);
...
T := S;
...
T[0] := ....
<wypisz s
Tu współdzielenie instancji jest już mniej ukryte, a sklonowanie
instancji trzeba wykonać jawnie za pomocą funkcji Copy.
Temat: Konwersja ze string na array of char i odwrotnie
On 29 Gru, 12:33, dziobu <kpawel@XXXkr.onet.pl wrote:
Dnia 12/29/2007 12:18 PM, Użytkownik zpksoft napisał:
Zadeklarowałaś T oraz S jako string,
po czym użyłaś instrukcji podstawienia.
Podobnie:
var i, j: integer;
i:=5;
j:=i;
inc(j);
ile jest i? (oczywiście 5 :)
var s, t : String;
   pc : PChar;
begin
s := 'Ala ma kota'; Â // wiadomo
pc := @s[1]; Â Â Â Â // zapamiętuje adres do pierwszego znaku w S
t := s; Â Â Â Â Â Â Â // "kopiuje" tekst do t
pc^ := 'O'; Â Â Â Â Â // ustawiam wartość pierwszego znaku w S
showmessage(t); Â Â Â // wyświetlam teoretycznie nie zmieniony tekst ;p
end;
Jaką wartość ma "t", którego formalnie nie zmieniałem i dlaczego nie
jest to już Ala? ;)
--
Pozdrawiam
Paweł Konarski
pawkon.ath.cx
Powinieneś sprawdzić
showmessage(s); a nie showmessage(t);,
bo ingerujesz w zmienną s (@s[1])
Paweł Krzyżanowski
Temat: Ktory klawisz klikniety?
Witam
jest:
TButton(FindComponent('Button' + IntToStr(BtnNo - 13)).Caption :=
OpenDialog.FileName;
powinno byc:
TButton(FindComponent('Button' + IntToStr(BtnNo - 13))).Caption :=
OpenDialog.FileName;
No cóż, zjadłęm nawias, zdarza się.
nie dziala - cos tu jest skopane chyba
pierwsza sprawa to
co w ogole oznacza ta 7 ?
Proszę zobaczyć do helpa; drugi parametr funkcji Copy oznacza (o ile
pamiętam) indeks pierwszego znaku z łańcucha do skopiowania. Ponieważ
'Button' ma długość 6, więc od 7 znaku zaczyna się numer w nazwie przycisku.
A że nie działa - to co konkretnie wyskakuje?
Pozdrawiam,
Chizra.
Temat: Dwa Pos'y
cZe  dElFiArZe
p1 := pos('class="FBI"',tmp);
p2 := pos('CIA',tmp);
jak mam tak to "p2" od ktorej pozycji szuka ? od poczatku od 0
czy od aktualnej
1. Jeśli już to od 1 (nie 0) - od pierwszego znaku
2. Jeśli ituicja nie podpowiada to zawsze pozostaje
sprawdzenie, które tez umiesz. Niby dlaczego inni
mają odwalić robotę, którą też jesteś w stanie wykonać ???.
Tocbac.
Temat: Dwa Pos'y
[...]
1. Jeśli już to od 1 (nie 0) - od pierwszego znaku
2. Jeśli ituicja nie podpowiada to zawsze pozostaje
sprawdzenie, które tez umiesz. Niby dlaczego inni
mają odwalić robotę, którą też jesteś w stanie wykonać ???.
nie wcale bym nie chcial aby inni zamnie sprawdzali ale
moze ktos wlasnie wie
ps
czytajac posty nie ktorych osob
samemu mnie naszla niezmierna chec napisania
takiego glupiego coby za mnie inni odwalili czarna prace :)
.::::duch:::::........
Temat: sizeof(STRING) ? [D3]
Piotr 'Lodek' Hosowicz pisze:
Plonk pisze (w HTMLu+UTF oczywiście) :
[CIACH]
Przecież pisze, że interesuje go rozmiar a ten w kodowaniach
wielobajtowych może być zupełnie inny niż ilość przechowywanych
znaków.
A Ty czegoś się znowu uczepił ?
Zastanów się, od kiedy to zmienna typu _string_ może zawierać Unikody,
czy inne wielobajtowe wynalazki.
No, na upartego to chyba nawet i moze.
Na upartego - znaczy, że np. tak :
- s[1] - pierwsza część pierwszego znaku
- s[2] - druga część pierwszego znaku
- itd... ???
No bo jakoś żadna inna metoda mi nie przychodzi do głowy.
pozdr. Yankee
Temat: sizeof(STRING) ? [D3]
Na upartego - znaczy, że np. tak :
- s[1] - pierwsza część pierwszego znaku
- s[2] - druga część pierwszego znaku
- itd... ???
No nie, po prostu s[1] zwroci Ci cos co ma dwa bajty na ten przyklad, i
wlasnie dlatego length zwracajaca liczbe _znakow_ nie zwroci Ci wtedy
rozmiaru. O ile dobrze rozumiem.
Ale, afair, takie cuda unikodowe to siedza w WideStringach tylko. A tu
chodzi o String=AnsiString chyba.
pozdrawiam
pawel.
Temat: sizeof(STRING) ? [D3]
Pawel Przewlocki pisze:
Na upartego - znaczy, że np. tak :
- s[1] - pierwsza część pierwszego znaku
- s[2] - druga część pierwszego znaku
- itd... ???
No nie, po prostu s[1] zwroci Ci cos co ma dwa bajty na ten przyklad, i
wlasnie dlatego length zwracajaca liczbe _znakow_ nie zwroci Ci wtedy
rozmiaru. O ile dobrze rozumiem.
Ale, afair, takie cuda unikodowe to siedza w WideStringach tylko. A tu
chodzi o String=AnsiString chyba.
Dokładnie - tu chodzi o zwykłego stringa, który nie ma nic wspólnego
z WideStringiem. I stąd te moje wszystkie pytania.
pozdr. Yankee
Temat: sizeof(STRING) ? [D3]
"Yankee" <pjank @ home.pl
A Ty czegoś się znowu uczepił ?
Zastanów się, od kiedy to zmienna typu _string_ może zawierać Unikody,
czy inne wielobajtowe wynalazki.
No, na upartego to chyba nawet i moze.
Na upartego - znaczy, że np. tak :
- s[1] - pierwsza część pierwszego znaku
- s[2] - druga część pierwszego znaku
- itd... ???
No bo jakoś żadna inna metoda mi nie przychodzi do głowy.
Dokładnie tak może być tyle, że Length podaje rozmiar mimo, że na zdrowy rozsądek powinno podawać ilość znaków a SizeOf podające rozmiar wewnętrznego wskaźnika jest po prostu zmaszczone, bo powinno zwracać ilość bajtów zajmowanych przez łańcuch tak jak robi to dla innych zmiennych.
Przeglądaj wszystkie wypowiedzi z tego tematu
Temat: sizeof(STRING) ? [D3]
Yankee napisał(a) w wiadomości: ...
Pawel Przewlocki pisze:
Na upartego - znaczy, że np. tak :
- s[1] - pierwsza część pierwszego znaku
- s[2] - druga część pierwszego znaku
- itd... ???
No nie, po prostu s[1] zwroci Ci cos co ma dwa bajty na ten przyklad, i
wlasnie dlatego length zwracajaca liczbe _znakow_ nie zwroci Ci wtedy
rozmiaru. O ile dobrze rozumiem.
Ale, afair, takie cuda unikodowe to siedza w WideStringach tylko. A tu
chodzi o String=AnsiString chyba.
Dokładnie - tu chodzi o zwykłego stringa, który nie ma nic wspólnego
z WideStringiem. I stąd te moje wszystkie pytania.
Podejrzewam, że pytacz nawet nie wie, że na jeden
znak mogą być przeznaczone 2 bajty. Jemu chodzi po prostu
o liczbę znaków stringu, czyli Length, co podałeś.
Inaczej by pytał: "... a nie 9 (10 to błąd liczenia owiec)
czy 18 ?".
Pozdrawiam.
Tocbac.
Temat: Plik tekstowy TXT PILNE !!!
Witajcie!,
Czy ktoś może mi podpowiedzieć jak mogłbym pobrać z pliku TXT tylko
okresloną ilość znaków, tzn potrzebuję pobierać z pliku.txt np. po 10
znaków (sprawdzam je i umieszczam w bazie) nazstępnie pobieram nastepnych
10
znaków i znowu sprawdzam i umieszczam w bazie itd..itd...
jak to zrobić??
Please help me!!
Pozdrowionka!!!
Użyj polecenia
Copy('jakis tam string',numer pierwszego znaku, ilosc znakow do
skopiowania);
Temat: Porównywanie PChar'ów
Paweł Pawlak wrote:
Użytkownik Krzykacz Plamisty napisał:
| jak sprawdzić, ile
| miejsca zostało przydzielone dla PChar (skrót myślowy)?
Przy "konwersji" z PChar na String długość tego pierwszego jest
obliczana (do napotkania pierwszego znaku #0) -
[...]
OK, ale jest jakiś sposób, by obliczyć "rzeczywistą" długość? (patrz też
wyżej)
| Wem, ale chcę szybko porównać dwa ciągi znaków.
No to musiałbyś najpierw "zrobić" string o długości bufora i procedurą
Move przenieść zawartość bufora do tego stringa.
Teraz działa, tylko że chyba łatwiej będzie od razu wczytać dane do
string'a...
thx
Temat: Porównywanie PChar'ów
Witam
Dnia 2002-08-20 17:54, Użytkownik Krzykacz Plamisty napisał:
Paweł Pawlak wrote:
| Użytkownik Krzykacz Plamisty napisał:
| jak sprawdzić, ile
| miejsca zostało przydzielone dla PChar (skrót myślowy)?
| Przy "konwersji" z PChar na String długość tego pierwszego jest
| obliczana (do napotkania pierwszego znaku #0) -
[...]
OK, ale jest jakiś sposób, by obliczyć "rzeczywistą" długość? (patrz też
wyżej)
Oczywiście, że jest. Liczy się bajty przed tym zerem. I nie ma innej metody.
Temat: Porównywanie PChar'ów
Sławomir Adamski wrote:
Witam
Dnia 2002-08-20 17:54, Użytkownik Krzykacz Plamisty napisał:
| Paweł Pawlak wrote:
| Użytkownik Krzykacz Plamisty napisał:
| jak sprawdzić, ile
| miejsca zostało przydzielone dla PChar (skrót myślowy)?
| Przy "konwersji" z PChar na String długość tego pierwszego jest
| obliczana (do napotkania pierwszego znaku #0) -
| [...]
| OK, ale jest jakiś sposób, by obliczyć "rzeczywistą" długość? (patrz
| też wyżej)
Oczywiście, że jest. Liczy się bajty przed tym zerem. I nie ma innej
metody.
Do tego służy length.
Ja pytałem o ilość bajtów przydzielonych dla PChar.
Temat: Porównywanie PChar'ów
Użytkownik Krzykacz Plamisty napisał:
Sławomir Adamski wrote:
| Witam
| Dnia 2002-08-20 17:54, Użytkownik Krzykacz Plamisty napisał:
| Paweł Pawlak wrote:
| | Użytkownik Krzykacz Plamisty napisał:
| | jak sprawdzić, ile
| | miejsca zostało przydzielone dla PChar (skrót myślowy)?
| | Przy "konwersji" z PChar na String długość tego pierwszego jest
| | obliczana (do napotkania pierwszego znaku #0) -
| [...]
| OK, ale jest jakiś sposób, by obliczyć "rzeczywistą" długość? (patrz
| też wyżej)
| Oczywiście, że jest. Liczy się bajty przed tym zerem. I nie ma innej
| metody.
Do tego służy length.
Ja pytałem o ilość bajtów przydzielonych dla PChar.
1. jeśli sam przydzielasz ilość bajtów dla bufora, to wiesz, ile ich
przydzieliłeś
lub
2. funkcje (np. GetSystemDirectory, ReadFile) zwykle zwracają (czy to
jako wynik czy przez jeden z parametrów) ile bajtów wstawiły do
określonego bufora
PChar jest tylko wskaźnikiem na obszar pamięci. I to Ty musisz mu
przydzielić pamięć (np. przez GlobalAlloc), albo robi to wywoływana
funkcja (np. FormatMessage) i Ty też jesteś odpowiedzialny za zwolnienie
tego bufora.
Pozdrawiam,
Morris
Pozdrawiam,
Morris
Temat: Problem z EDBEditError
Olo napisał(a) w wiadomości: <7psi0s$98@sunsite.icm.edu.pl...
| czy OnUpdateData dla DataSource. Zawsze wyskakuje mi standardowe okienko
z
| informacją zamiast mojego.
hmmm... moze
try
except
?
Olo
ol@promail.pl
Jak najbardziej.
Ale jak i gdzie?
try edit1.validate przy zdarzeniu OnExit z pola to już za późno.
W którym momencie sprawdzić czy pole jest dobrze wypełnione?
OnChange? Wówczas przy kazdym znaku wyskakuje mi mój komunikat (co jest
zrozumiałe, bo przy wpisywaniu pierwszego znaku wartość pola jest jeszcze
nieprawidłowa).
Proszę o dalsze wskazówki.
Z góry dziękuję.
Przemas pze@polbox.com
p.ze@phys.uni.torun.pl
P.S. Adres w 'reply to' to zupełna zmyła
Temat: PILNA POMOC POTRZEBNA
Dzieki o to chodziło
var a: string;
a:='Ala ma kota';
ShowMessage(IntToStr(ord(a[1])));
| Prosze nocnych pisarzy o pomoc.
| Jak znależć kod ASCII pierwszego znaku ciągu tekstowego?
ShowMessage(IntToStr(ord(Edit1.Text[1])));
czyli funkcja "ord"
Temat: String -> PChar jak zamienić?
"Martin Brzezinka" <martin_brzezi@hotmail.comnapisał(a):
Może nie programujesz w Delphi 3? Bo jest istotna różnica: Delphi 3 samo
alokuje pamięć dla PChar, co więcej, od wersji 3 nawet stary typ string
jest wskaźnikiem, automatycznie alokowanym przez kompilator.
Powyższy kod działa zupełnie bez zarzutu, jest to zwyczajny casting, jak
przy klasach.
Może nie programujesz w Delphi i dlatego piszesz bzdury ;-)
Proponuję analizę poniższego przykładu:
procedure TForm1.Button1Click(Sender: TObject);
var S:String;
P:PChar;
begin
// w Edit jest 'Edit1'
S:=Edit1.Text;
P:=PChar(S);
ShowMessage(P);// 'Edit1'
S[2]:='x';
ShowMessage(P);// 'Exit1'
end;
W PChar jest przechowywany tylko WSKAŹNIK do pierwszego znaku stringa.
___________________________________________
Marcin Wieczorek ( T-1000 )
wiec@polbox.com www.polbox.com/w/wieczor
DELPHI FAQ http://www.kki.net.pl/t1000
Temat: String -> PChar jak zamienić?
arcin Wieczorek <wiec@polbox.comskrev i inlägg
<353ba923.24849@news.lodz.pdi.net...
Może nie programujesz w Delphi i dlatego piszesz bzdury ;-)
Proponuję analizę poniższego przykładu:
[ C I A C H ]
W PChar jest przechowywany tylko WSKAŹNIK do pierwszego znaku stringa.
Naturalnie. Może nie wyraziłem się ściśle. Chodziło mi o dwie rzeczy:
1. Zmiennej typu PChar nie potrzeba allokować na wzór C++, tak jak to
pisało parę osób, ponieważ Delphi robi to automatycznie, zwłaszcza przy
castingu.
Tak więc casting
zmienna_typu_PChar := PChar(zmienna_typu_string);
jest w pełni bezpieczny.
2. Zmienne typu string są od Delphi 3 przechowywane jako wskaźniki do
pierwszego adresu, podobnie jak PChar, z tym że nie kończą się #0, lecz
liczba znaków jest po staremu zakodowana w pozycji zerowej. Ponadto, w
pozycji -1 jest zakodowana liczba referencji. Jeśli kopiuje się string do
stringa, nie allokuje się nowej pamięci, tylko zwiększa się liczbę
referencji do danej zmiennej (zwiększa wartość znaku w pozycji -1 o jeden).
Oczywiście, to kompilator dba o to sam.
Dopiero, gdy próbuje się zmienić taki skopiowany string, jest on
automatycznie zaraz przed zmianą kopiowany w inne miejsce pamięci.
pozdrawiam,
mar@openinfo.se
Strona 4 z 4 • Zostało wyszukane 315 wypowiedzi • 1, 2, 3, 4