Compilation problem

Just starting out? Need help? Post your questions and find answers here.
Lubos
Enthusiast
Enthusiast
Posts: 167
Joined: Tue Feb 03, 2004 12:32 am
Contact:

Compilation problem

Post by Lubos »

My program (rather smaller size) without problems operates under the IDE. If I want compile it (to an *.exe), a message appears: Line99: Prevod () is not a function, array, list, map or macro.

In fact Prevod () is a correct procedure:

Code: Select all


Procedure.s Vymena (StaryZnak$, NovyZnak$)
Shared Vysledny$
Vysledny$= ReplaceString(Vysledny$,StaryZnak$,NovyZnak$)
ProcedureReturn Vysledny$
EndProcedure

Procedure.s Prevod(Prevadeny$)
Shared Vysledny$
Vysledny$=Prevadeny$


Vymena("Ľ", "L")
Vymena("ľ", "l")
Vymena("ô", "o")
Vymena("ŕ", "r")
Vymena("ä", "a")
Vymena("ĺ", "I")
Vymena("Ô", "O")

Vymena("Ĺ", "L")

Vymena("á", "a")
Vymena("č", "c")
Vymena("é", "e")

Vymena("í", "i")

Vymena("š", "s")
Vymena("ú", "u")
Vymena("ů", "u")
Vymena("ž", "z")
Vymena("Á", "A")
Vymena("Č", "C")
Vymena("Ť", "T")
Vymena("Ň", "N")
Vymena("Ď", "D")
Vymena("Ó", "O")

Vymena("É", "E")
Vymena("Ě", "E")
Vymena("Í", "I")
Vymena("Ř", "R")
Vymena("Š", "S")
Vymena("Ú", "U")
Vymena("Ů", "U")
Vymena("Ž", "Z")
Vymena("Ý", "Y")

Vymena("ě", "e")
Vymena("ť", "t")
Vymena("Ä", "A")
Vymena("ý", "y")
Vymena("ř", "r")
Vymena("Ŕ", "R")

Vymena(Chr(239), "d")     ;d
Vymena(Chr(243), "o")     ;o
Vymena(Chr(242), "n")     ;n
Vymena(Chr(176), Chr(32))
Vymena(Chr(10), Chr(32))
Vymena(Chr(13), Chr(32))
ProcedureReturn Vysledny$
EndProcedure
Line 99 is a remark line.
Last edited by Lubos on Tue Oct 14, 2014 5:31 pm, edited 1 time in total.
Windows 7 Professional / Service Pack 1 - 32bit, PureBasic 5.46 LTS (x86)
My mother tongue is Czech. I have a Czech version of Windows.
Who is not afraid of GOTO, the one need not afraid any things!
User avatar
takado
New User
New User
Posts: 7
Joined: Mon Jun 18, 2012 9:10 pm
Location: Germany
Contact:

Re: Compilation problem

Post by takado »

With this small snippet no problems here with Mac OS X 10.7.5, PB 5.23LTS (x64).
PB 5.23LTS // Windows 7 // MacOsX 10.7.5 // Linux Mint 16
Lubos
Enthusiast
Enthusiast
Posts: 167
Joined: Tue Feb 03, 2004 12:32 am
Contact:

Re: Compilation problem

Post by Lubos »

Evidently a small snipet is not enough. :(
Here is the full code:

Code: Select all


;Procedure Prevod for transforming CodePage 1250 to CodePage 852



Test$=("příliš žluťoučký kůň úpěl ďábelské ódy  Ř Í Š Ž Ť Č Ý Ů Ň Ú Ě Ď Á É Ó")



Procedure.s Vymena (StaryZnak$, NovyZnak$)
Shared Vysledny$
Vysledny$= ReplaceString(Vysledny$,StaryZnak$,NovyZnak$)
ProcedureReturn Vysledny$
EndProcedure

Procedure.s Prevod(Prevadeny$)
Shared Vysledny$
Vysledny$=Prevadeny$


Vymena("Ľ", "L")
Vymena("ľ", "l")
Vymena("ô", "o")
Vymena("ŕ", "r")
Vymena("ä", "a")
Vymena("ĺ", "I")
Vymena("Ô", "O")

Vymena("Ĺ", "L")

Vymena("á", "a")
Vymena("č", "c")
Vymena("é", "e")

Vymena("í", "i")

Vymena("š", "s")
Vymena("ú", "u")
Vymena("ů", "u")
Vymena("ž", "z")
Vymena("Á", "A")
Vymena("Č", "C")
Vymena("Ť", "T")
Vymena("Ň", "N")
Vymena("Ď", "D")
Vymena("Ó", "O")

Vymena("É", "E")
Vymena("Ě", "E")
Vymena("Í", "I")
Vymena("Ř", "R")
Vymena("Š", "S")
Vymena("Ú", "U")
Vymena("Ů", "U")
Vymena("Ž", "Z")
Vymena("Ý", "Y")

Vymena("ě", "e")
Vymena("ť", "t")
Vymena("Ä", "A")
Vymena("ý", "y")
Vymena("ř", "r")
Vymena("Ŕ", "R")

Vymena(Chr(239), "d")     ;d
Vymena(Chr(243), "o")     ;o
Vymena(Chr(242), "n")     ;n
Vymena(Chr(176), Chr(32))
Vymena(Chr(10), Chr(32))
Vymena(Chr(13), Chr(32))
ProcedureReturn Vysledny$
EndProcedure

Macro PrintN(Jakykoliv)
  Prevod(Jakykoliv)
  Print(Vysledny$+ #CRLF$)
EndMacro









; Příklad XXVIII (PB 4.20)
; Název souboru: POPELKA 1_8.PB
; vyhledávací utilita spolupracující s programem Notepad
; v úvodním okně se nejprve vybere soubor textového typu
; po zadání minimálně jednoznakového dotazu
; POPELKA  ve zvoleném souboru prohledává řádek po řádku
; řádky obsahující všechna slova dotazu  vypisuje do výsledkového souboru 
; slova se mohou v prohledávaném řádku vyskytovat kdekoliv
; sousloví (dvojice slov oddělené pevnou mezerou) se hledají  pomocí  %% ;
; (dvojitá procenta  v dotazu při vyhledávání představují jednu mezeru)
; prázdný dotaz program ukončuje
; program obsahuje ochranu proti načtení prázdného zdrojového souboru
; v programu jsou tři návratové body (návěští) používané příkazem Goto 
; použit příkaz CharUpper_()  pocházející z Windows API

AdresarPopelky$=GetCurrentDirectory()
Dim Slovo$(50)

If CreateDirectory(AdresarPopelky$+"POPEL")
EndIf
Directory$ =  AdresarPopelky$+"\POPEL\" 


ZDROJ:


Zdrojovy$=AdresarPopelky$+"allvideo.txt"

If Zdrojovy$
    If ReadFile(0, Zdrojovy$) 
      DelkaSouboru = Lof(0)                    ; zjištění délky otevřeného souboru
      CloseFile(0)
    EndIf
  EndIf

If DelkaSouboru=0
StandardFile$ = ""
Goto  ZDROJ 
; soubor nemá mít nulovou délku
; proto se musí skočit zpět a  načíst nový soubor
EndIf

For i = 1 To Len(Zdrojovy$)
  BezCesty$ = BezCesty$+ Mid(Zdrojovy$,i,1)
  If Mid(Zdrojovy$,i,1) ="\"
  BezCesty$= ""
  EndIf
  Next  i
  
If Len(BezCesty$) > 0
  Tecka = FindString(BezCesty$, ".",1)
  If Tecka > 0
    Podadresar$ = Left(BezCesty$,Tecka-1)
  EndIf    
  Podadresar$=AdresarPopelky$+"POPEL\"+Podadresar$
  If CreateDirectory(Podadresar$)
  Else
  EndIf
EndIf

If Len(BezCesty$) >30
  Database$ = Left(BezCesty$,27)+ "..."
Else
  Database$= BezCesty$
EndIf

Database$ = Space(30-Len(Database$))+Database$

Titul$ ="Vlož hledanou část slova ! Prázdný řádek ukončí dotazy."

ZNOVA:
RadkyCelkem=0
RadkyPrazdne=0
RadkyVyznamne=0
PuvodniDotaz$ = InputRequester("VideoDisky 1.0     "+Database$, Titul$, "")

Dotaz$ = LTrim(PuvodniDotaz$)  ; odstranit mezery vpředu 
Dotaz$ = RTrim(Dotaz$) ; i vzadu

While CountString(Dotaz$,"  ")                  ; když jsou 2 mezery za sebou
  Dotaz$ = ReplaceString(Dotaz$,"  "," ")   ; nahraď 2 mezery jednou 
Wend                                             ; opakuj kontrolu přítomnosti dvou mezer

CharUpper_(Dotaz$)  ; všechna písmena v dotazu budou velká
; nebyl použit příkaz UCase, protože nepřeváděl správně  š,ť,ž 

If Dotaz$ = ""  
 ; dotaz nulové délky se pokládá za návrh k ukončení hledání v souboru

  Result = MessageRequester("VideoDisky 1.0", "Ukončit program ?",  #PB_MessageRequester_YesNo)
 
 ; jazyk dotazu MessageRequester je dán jazykem operačního systému
 
 OTAZKA:

  If Result = #PB_MessageRequester_Yes       ; stisknuto Yes (Ano)
    End                 ; program se ukončí
  ElseIf Result = #PB_MessageRequester_No    ; stisknuto No(Ne)
   
    StandardFile$ = ""
    Goto ZDROJ ; znovu se nabídne adresářové okénko pro načtení nového souboru
  Else                          
   Goto OTAZKA ; stisknutí  Cancel (Storno)  nebo Esc otázku nezruší
  EndIf
 EndIf

; dotaz byl zkontrolován a nemá nulovou délku
Dotaz$ = Dotaz$ +" " 
; přidá se jedna mezera, ukončující poslední slovo v dotazu
; v tomto okamžiku je každé slovo v dotazu ukončeno právě jednou mezerou
; mezera tedy může být použita ke zjištění konce slova

SetCurrentDirectory(Podadresar$)

; soubor do něhož se ukládá výsledek bude mít jméno odpovídající dotazu
; přípustný název souboru nesmí obsahovat * ? : / > < \ "
; tyto znaky se proto v názvu souboru nahrazují slovním vypsáním
Pripustny$=ReplaceString(Dotaz$,"*", " hvezdicka ")
Pripustny$=ReplaceString(Pripustny$,"?"," otaznik ")
Pripustny$=ReplaceString(Pripustny$,":"," dvojtecka ")
Pripustny$=ReplaceString(Pripustny$,"/", " lomitko ")
Pripustny$=ReplaceString(Pripustny$,"\", " zpetne lomitko ")
Pripustny$=ReplaceString(Pripustny$,">", " vetsi nez ")
Pripustny$=ReplaceString(Pripustny$,"<", " mensi nez ")
Pripustny$=ReplaceString(Pripustny$,Chr(34), " uvozovky ") 

If CreateFile(1, Pripustny$+".txt")  
 ; vytvoří se soubor o názvu vytvořeném z textu dotazu 
; nepřípustné znaky jsou nahrazeny slovy 
Else
  MessageRequester("Nejde vytvořit soubor:", Pripustny$+".txt") 
; tato eventualita by normálně neměla nastat – ošetřena je zde „pro jistotu“
  Goto ZNOVA
EndIf

If ReadFile(0, Zdrojovy$)   ; jestliže jde přečíst soubor tak  pokračujeme… 

     Tvoreny$=""
      Pocetslov=0

     For i = 1 To Len (Dotaz$)
       ;  dotaz se  uloží po slovech do indexovaných proměných Slovo$(i)
       If  Mid(Dotaz$,i,1) = " " ; čte jeden  znak z i-té pozice v řetězci dotazu  
        Pocetslov=Pocetslov+1
      
  Slovo$(Pocetslov) = Tvoreny$
        Tvoreny$=""            
       Else
         Tvoreny$ = Tvoreny$+ Mid(Dotaz$,i,1) 
         ; dokud se neobjeví mezera, tvoří se Tvoreny$
        EndIf 
       Next i   
       
    For j = 1 To PocetSlov
         Slovo$(j)=ReplaceString(Slovo$(j),"%%"," ")
    Next j 
 ; zdvojená procenta se užívají jako pevná mezera k  hledání sousloví
 ;***************************************************************************
 Total$=""
 For j = 1 To PocetSlov
       Total$ =Total$+ Slovo$(j)
     Next j 
     Total$=Prevod(Total$)
    Slovo$(1)=Total$
    Pocetslov=1
 ;*******************************************************
Zacatek = ElapsedMilliseconds()  
; specifická funkce  udávající počet milisekund od startu počítače 

  While Eof(0) = 0   ; smyčku  provádět  dokud se nedojde na konec souboru
  
    PuvodniRadek$=ReadString(0)
    RadkyCelkem =RadkyCelkem+1
    
    If Len(PuvodniRadek$)=0
      RadkyPrazdne = RadkyPrazdne +1
    Else   ;  hledat má smysl v jen v neprázdných řádcích
    
      Radek$ = PuvodniRadek$
      CharUpper_(Radek$) ; všechna písmena v řádku budou velká
      ;*******************************************************************
      ; odstranění oddělovačů
      Radek$=RemoveString(Radek$," ")
      Radek$=RemoveString(Radek$,"\")
      Radek$=RemoveString(Radek$,"_") 
      Radek$=RemoveString(Radek$,",")
      Radek$=RemoveString(Radek$,"-")
      Radek$=RemoveString(Radek$,".") 
      Radek$=RemoveString(Radek$,";")
      Radek$=Prevod(Radek$)
      ;******************************************************************
     Vyskyt =1

      For j = 1 To PocetSlov
            Vyskyt = FindString(Radek$, Slovo$(j),1) 
             If Vyskyt = 0 ; pokud v řádku právě hledané slovo chybí 
                Break          
            ; další slova  se nehledají - Break ukončí  provádění smyčky
             EndIf
       Next j

     If Vyskyt > 0  
; jestliže byla v řádku všechna hledaná slova přítomna,  řádek je významný
       RadkyVyznamne = RadkyVyznamne+1
       If RadkyVyznamne = 1  
      ; při prvním výskytu významného řádku se vytvoří hlavička 
         WriteStringN (1, " ")
         WriteStringN (1, "Zdrojový soubor:  "+ Zdrojovy$)
         WriteStringN (1, "Hledáno:  "+ PuvodniDotaz$)
         WriteStringN (1, " ")
         WriteStringN (1, "Výsledkový soubor:  ")
         WriteString(1, Podadresar$+"\"+Pripustny$+".txt")
         WriteStringN (1, " ")
       EndIf
       WriteStringN (1, PuvodniRadek$) ;  významné řádky se zapisují
     EndIf
    EndIf
  Wend

 Trvalo = ElapsedMilliseconds() -Zacatek  
 ; doba  prohlížení databázového souboru        
  PocetRadkuVyznamnych$= Str(RadkyVyznamne)
  PocetRadkuCelkem$= Str(RadkyCelkem)
  PocetRadkuPrazdnych$= Str(RadkyPrazdne)
  

  If RadkyVyznamne  > 0
    WriteStringN (1, " ")
    WriteStringN (1, "Počet řádků výsledku:  "+ PocetRadkuVyznamnych$)
    WriteStringN (1, " ")
    WriteStringN (1, "Počet řádků zdroje:  "+ PocetRadkuCelkem$ )
    WriteStringN (1, "Počet prázdných řádků:  "+PocetRadkuPrazdnych$)
    WriteStringN (1, "Potřebný čas:  "+ Str(Trvalo) +" ms")

  EndIf

  CloseFile(0)               ; zavři oba dříve otevřené soubory
  CloseFile(1)

EndIf

Adres$=GetCurrentDirectory()

If RadkyVyznamne  > 0  ; jestliže vyhověl alespoň jeden řádek 
; pak má smysl spouštět externí program zobrazující vyhovující řádky
 RunProgram("Notepad.exe",Pripustny$+".txt",Adres$) 
 ; Notepad zobrazí výsledek 
EndIf
Titul$ = Pripustny$ + ".txt: " + PocetRadkuVyznamnych$ + "   Další ?"

Goto ZNOVA
End


A small text file : "allvideo.txt" must be present too.
Content of this file is arbitrary (random).

ExampLe of content:

F:\AA1\1ConvertX
F:\AA1\4svatby - ověřené
F:\AA1\AA1.txt
F:\AA1\Demnerová přednáška
F:\AA1\disk1.txt
F:\AA1\DVDINFORM - DVD Blesk Kinohit - Pád třetí říše.mht
Windows 7 Professional / Service Pack 1 - 32bit, PureBasic 5.46 LTS (x86)
My mother tongue is Czech. I have a Czech version of Windows.
Who is not afraid of GOTO, the one need not afraid any things!
User avatar
takado
New User
New User
Posts: 7
Joined: Mon Jun 18, 2012 9:10 pm
Location: Germany
Contact:

Re: Compilation problem

Post by takado »

I just tried your full code on Mac OS X 10.7.5, PB 5.23LTS (x64) (had to change the CharUpper_() to Ucase(), but that might be no problem, will re-check this later at home)
Code compiled and started without any errors.

As mentioned, I will check again as soon as i'm home at my windows 7 PC.
PB 5.23LTS // Windows 7 // MacOsX 10.7.5 // Linux Mint 16
Lubos
Enthusiast
Enthusiast
Posts: 167
Joined: Tue Feb 03, 2004 12:32 am
Contact:

Re: Compilation problem

Post by Lubos »

As mentioned, I will check again as soon as i'm home at my windows 7 PC.
Thank you very much.
L.
Windows 7 Professional / Service Pack 1 - 32bit, PureBasic 5.46 LTS (x86)
My mother tongue is Czech. I have a Czech version of Windows.
Who is not afraid of GOTO, the one need not afraid any things!
infratec
Always Here
Always Here
Posts: 7582
Joined: Sun Sep 07, 2008 12:45 pm
Location: Germany

Re: Compilation problem

Post by infratec »

Hi,

works without problems.

PB 5.31b1 x86 on Win 7 64

Bernd
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4946
Joined: Sun Apr 12, 2009 6:27 am

Re: Compilation problem

Post by RASHAD »

Make sure that:
1- File Format --> Encoding Utf8
2- Your text File saved as utf8

Everything goes well
PB 5.30 x86 Win 8.1 x64
Egypt my love
juror
Enthusiast
Enthusiast
Posts: 228
Joined: Mon Jul 09, 2007 4:47 pm
Location: Courthouse

Re: Compilation problem

Post by juror »

PB IDE or jabpe?

Sometimes very subtle differences.
Lubos
Enthusiast
Enthusiast
Posts: 167
Joined: Tue Feb 03, 2004 12:32 am
Contact:

Re: Compilation problem

Post by Lubos »

juror wrote:PB IDE or jabpe?

Sometimes very subtle differences.
PB IDE - PB 5.30 (x86)
Windows Home Premium SP1 32 bit
Windows 7 Professional / Service Pack 1 - 32bit, PureBasic 5.46 LTS (x86)
My mother tongue is Czech. I have a Czech version of Windows.
Who is not afraid of GOTO, the one need not afraid any things!
Lubos
Enthusiast
Enthusiast
Posts: 167
Joined: Tue Feb 03, 2004 12:32 am
Contact:

Re: Compilation problem

Post by Lubos »

infratec wrote:Hi,

works without problems.

PB 5.31b1 x86 on Win 7 64

Bernd
Can you send me the compilated file (e. g. videoarchive.exe) on my email?
Please, in a zipped form.
Thanks beforehand.
Luboš
Windows 7 Professional / Service Pack 1 - 32bit, PureBasic 5.46 LTS (x86)
My mother tongue is Czech. I have a Czech version of Windows.
Who is not afraid of GOTO, the one need not afraid any things!
Lubos
Enthusiast
Enthusiast
Posts: 167
Joined: Tue Feb 03, 2004 12:32 am
Contact:

Re: Compilation problem

Post by Lubos »

Lubos wrote: Can you send me the compilated file (e. g. videoarchive.exe) on my email?
I switched from user to administrator and compilation was successful. I have no idea why. However, the problem is solved. Thanks all.
Windows 7 Professional / Service Pack 1 - 32bit, PureBasic 5.46 LTS (x86)
My mother tongue is Czech. I have a Czech version of Windows.
Who is not afraid of GOTO, the one need not afraid any things!
Post Reply