Spatne vyhodnocena podminka ? – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Spatne vyhodnocena podminka ? – Pascal – Fórum – Programujte.comSpatne vyhodnocena podminka ? – Pascal – Fórum – Programujte.com

 

rainbof0
Newbie
12. 2. 2010   #1
-
0
-

mám funkci která slouží k hledání v poli znaků, při ladění jsem narazil na to že přesto že se dvě hodnoty rovnají, podmínka je vyhodnotí jako nestejné.
jde konkrétně o find[slovo]=buffer[data+slovo]

Zde je ta fuknkce, znak » v programu naznacuje misto kde momentalne stoji debugger.

buffer: array[0..1024*128] of char;
kde na od 4 mista je napis 'R','A','I','N','B','O','F'


Function TRaw_file.search(find:string;pos:longint=0):longint; {prohleda soubor
var data,slovo,score: longint; //data pozice v datech, slovo pozice ve slove
begin
read_Block(size); //pokus nacpat celej soubor do pameti
search:=0;
score:=0;

for data:=pos to (size-length(find)) do {!}{v pripade vetsich dat se bude mus
begin {-> prochazeni bufferem}
slovo:=0;
repeat
if find[slovo]=buffer[data+slovo] then {pozice v datech + pozice ve slove}
begin
score:=score+1;
end
» else score:=0;
inc(slovo);
until (score=0) or (data+slovo=size); {pokud nesouhlasi hledane slovo nebo
if score=length(find) then begin
search:=data;
break;
end;
score:=0;
end; {<- prochazeni bufferem }
end;

....

Watches
size = 20157
»find[slovo] = 82 'R'
data = 3
»slovo = 0
»buffer[data+slovo] = 82 'R'
score = 0

Nepomohlo ani porovnavani jako ordninalni hodnoy.

Nahlásit jako SPAM
IP: 89.233.145.–
illioner0
Stálý člen
12. 2. 2010   #2
-
0
-

Používáš dlouhý stringy? Že ti to vychází za 255 v délce hledání ve find...
V tom If Porovnáváš string find a ten začíná snad na indexu 1. K nule nemáš přistupovat, tam první znak neni snad v žádný implementaci.
Jde o to jakej používáš KOMPILER, jediný opravdu bezchybný jsou Borlandu. Zkus si změnit v nastavení kompileru OPTIMALIZACE, mě to obvykle u chybujícího a padajícího programu pomůže

Nahlásit jako SPAM
IP: 85.71.152.–
Nechápu softwarové firmy, ktere utrácejí za čim dál těžkopádnější DRM ochranu!! Vidět kolem snahu o free2play model je jako příjemné připomenutí časů shareware (jen ten Microsoft stále nic nepochopil)
rainbof0
Newbie
12. 2. 2010   #3
-
0
-

to je mi taky divny ale find[1] na pozici 1 je B a hledany retezec predany funkci do FIND je RAINBOF.. Jedine ze by debuger kecal.

edit:
takze skutecne ano. bylo to tim ze jsem cetl z pozice 0, zajimave ze v prikladu

var x: string;
begin
writeln(x[0]);
end.

a pri ladeni mi to i ted ukazuje spatne udaje. rika ze find[slovo] ='A' ale pritom je to R
mi to hned vylitne na error.. neni to chyba jazyka ??? zalozim na to jine vlakno.

Nahlásit jako SPAM
IP: 89.233.145.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

Podobná vlákna

CO je spatne? — založil Figa

špatné výsledky — založil vasek.t

Co mam spatne ? — založil Kamil

[DB] - špatné řazení — založil Storm

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý