Autor Téma: funkce pos, ansipos  (Přečteno 766 krát)

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1437
  • Karma: 34
    • Pepak.net
Re:funkce pos, ansipos
« Odpověď #15 kdy: 29-06-2019, 16:39:37 »
A vážně nechceš použít ten AnsiStartsText? Jako nebudu ti to vnucovat, ale člověk s tvými znalostmi by se fakt neměl pokoušet používat funkce, které pracují s C-like řetězci (PChar) a konkrétním rozložením v paměti. I kdyby ti na to na Stack Overflow nabídli funkci.

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 370
  • Karma: 0
    • Verze Delphi: 7
Re:funkce pos, ansipos
« Odpověď #16 kdy: 29-06-2019, 17:34:05 »
Co tady znamená "krachne"?

Jinak v Delphi 7 bych místo přetypování na Int64 přetypoval spíš na Cardinal.

exception: EAccessViolation on address...

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 370
  • Karma: 0
    • Verze Delphi: 7
Re:funkce pos, ansipos
« Odpověď #17 kdy: 29-06-2019, 17:36:30 »
A vážně nechceš použít ten AnsiStartsText? Jako nebudu ti to vnucovat, ale člověk s tvými znalostmi by se fakt neměl pokoušet používat funkce, které pracují s C-like řetězci (PChar) a konkrétním rozložením v paměti. I kdyby ti na to na Stack Overflow nabídli funkci.

Myslím, že jsem to už jsem psal, že jsem žádnou takovou funkci nenašel, ani nic z toho co mi lidi radili.

Já myslím, že je docela možné že tu chybu generuje tohle:
Kód: Delphi [Vybrat]
  1. Inc(AStr, AStartPos);
Pokud je AStartPos vyšší než je rozsah AStr, tak to vygeneruje chybu.

Ale je to jen domněnka. Přímo otestovat to neumím, protože při krokování mi to najede do funkce a pak se rekurzivně volá ta samá funkce, ale vidím už jen krokování kódu uvnitř FMM4

Zjednoším to:

Kód: Delphi [Vybrat]
  1. lastOffset := ansiPosOffset(
  2.     PChar('L'),
  3.     PChar('RL'),
  4.     1 );
  5.  
« Poslední změna: 29-06-2019, 17:46:16 od vangog »

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 786
  • Karma: 43
    • Verze Delphi: 10.3
Re:funkce pos, ansipos
« Odpověď #18 kdy: 29-06-2019, 17:41:28 »
Když předáváš jako parametr jen jeden znak, tak asi chybí koncový znak #0.
AnsiPosOffset( PAnsiChar(AnsiString('$')), ... mi funguje (v novějších Delphi, tak tam mám PAnsiChar a AnsiString).

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 370
  • Karma: 0
    • Verze Delphi: 7
Re:funkce pos, ansipos
« Odpověď #19 kdy: 29-06-2019, 18:09:06 »
Aha tak tím to je. Zajimavá maličkost.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1437
  • Karma: 34
    • Pepak.net
Re:funkce pos, ansipos
« Odpověď #20 kdy: 29-06-2019, 18:12:19 »
A vážně nechceš použít ten AnsiStartsText? Jako nebudu ti to vnucovat, ale člověk s tvými znalostmi by se fakt neměl pokoušet používat funkce, které pracují s C-like řetězci (PChar) a konkrétním rozložením v paměti. I kdyby ti na to na Stack Overflow nabídli funkci.

Myslím, že jsem to už jsem psal, že jsem žádnou takovou funkci nenašel, ani nic z toho co mi lidi radili.

A podíval ses do StrUtils, jak ti poradil Stano? Třeba například na řádek 29?

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 370
  • Karma: 0
    • Verze Delphi: 7
Re:funkce pos, ansipos
« Odpověď #21 kdy: 29-06-2019, 18:56:37 »
Hmm věděli jste, že existuje funkce PosEx v StrUtils? Ale teď vážně. Fakt bych se chtěl do toho souboru StrUtils podívat. Ale žádný soubor s koncovkou *.pas s funkcí PosEx v adresáři Delphi 7 nemám.

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 370
  • Karma: 0
    • Verze Delphi: 7
Re:funkce pos, ansipos
« Odpověď #22 kdy: 29-06-2019, 18:57:28 »
A vážně nechceš použít ten AnsiStartsText? Jako nebudu ti to vnucovat, ale člověk s tvými znalostmi by se fakt neměl pokoušet používat funkce, které pracují s C-like řetězci (PChar) a konkrétním rozložením v paměti. I kdyby ti na to na Stack Overflow nabídli funkci.

Myslím, že jsem to už jsem psal, že jsem žádnou takovou funkci nenašel, ani nic z toho co mi lidi radili.

A podíval ses do StrUtils, jak ti poradil Stano? Třeba například na řádek 29?

Já jsem jim psal, že jsem StrUtils nenašel. Nikdo mi neporadil jak přesně postupovat abych ho našel. Stále na ten návod čekám. Třeba pomocí F8 se dovnitř té funkce nedostanu a soubor jsem nenašel.
« Poslední změna: 29-06-2019, 19:01:57 od vangog »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4472
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:funkce pos, ansipos
« Odpověď #23 kdy: 29-06-2019, 19:22:39 »
Odpověď #5 kdy: 21-06-2019, 13:09:08  Asi si slepý
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 370
  • Karma: 0
    • Verze Delphi: 7
Re:funkce pos, ansipos
« Odpověď #24 kdy: 29-06-2019, 19:58:13 »
A já jsem odpověděl:

Nenašel jsem, ve kterém adresáři a souboru to je? Nevím jak to hledáte.

Řekl jsem že potřebuju podrobný návod, jinak mi je taková rada úplně k ničemu.

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 370
  • Karma: 0
    • Verze Delphi: 7
Re:funkce pos, ansipos
« Odpověď #25 kdy: 29-06-2019, 20:01:04 »
Co je Code Insight a kde to najdu jsem se taky nedozvěděl. Psal jsem že jsem našel jen nastavení Code Insight a to je tak vše. To jsou takové rady jakoby rádobymudrců ale užitečné to je asi tak jako když bych se někoho na ulici zeptal kolik je hodin a on mi odpověděl, "zajdi si do hodinářství!". EHm... A já na to: "A kde je nejbližší hodinářství?". "Najdi si to na mapě." nebo "Zeptej se někoho jiného"
« Poslední změna: 29-06-2019, 20:02:35 od vangog »

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2600
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:funkce pos, ansipos
« Odpověď #26 kdy: 29-06-2019, 20:16:01 »
Asi bys mel precist https://www.root.cz/texty/jak-se-spravne-ptat/, abys pochopil, na jakem principu diskusni fora funguji a ne svadet vlastni insuficienci na ostatni  >:(

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4472
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:funkce pos, ansipos
« Odpověď #27 kdy: 29-06-2019, 20:18:14 »
To snáď nie je pravda.
  • Ak si neviem pomôcť ináč, tak si otvorím správcu súboru, vyberiem disk C a dám hľadať "SysUtils", alebo
  • do uses pridám "SysUtils". Potom potom na to slovo nabehnem kurzorom. Podškrtne sa. <Ctrl>+ľavé tlačidlo myši. Alebo pravé a prvá položka "Find declaration"
Plus súhlas s pdf1957
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2600
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:funkce pos, ansipos
« Odpověď #28 kdy: 29-06-2019, 21:22:45 »
Fakt bych se chtěl do toho souboru StrUtils podívat. Ale žádný soubor s koncovkou *.pas s funkcí PosEx v adresáři Delphi 7 nemám.
No pokud mas nejakou starter edition nebo buhvi co, tak tam treba ty zdrojove kody nejsou.

Ale pokud mas zakoupenou nejakou edici pocinaje Professional, tak zatim soucasti kazde instalace byly zdrojove kody v podadresari source\.
Jestli uz D7 obsahoval strutils nebo ne si samozrejme nepamatuju. Ale pokud ne, tak funkce pos  bude urcite v system.pas

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 370
  • Karma: 0
    • Verze Delphi: 7
Re:funkce pos, ansipos
« Odpověď #29 kdy: 29-06-2019, 22:06:24 »
To snáď nie je pravda.
  • Ak si neviem pomôcť ináč, tak si otvorím správcu súboru, vyberiem disk C a dám hľadať "SysUtils", alebo
  • do uses pridám "SysUtils". Potom potom na to slovo nabehnem kurzorom. Podškrtne sa. <Ctrl>+ľavé tlačidlo myši. Alebo pravé a prvá položka "Find declaration"
Plus súhlas s pdf1957

Ale to jsem už psal, že jsem ten soubor hledal a nikde jsem nic nenašel. Proč si myslíš, že když dám prohledávat disk c: na kterém nic nemám nainstalované, že mi to něco najde? Mám to nainstalované pod P:, to jsem ale už psal, že program jsem prohledával. To snad není pravda...