Open file for input, VB6 to Gambas translation.

New to Gambas? Post your questions here. No question is too silly or too simple.
Post Reply
FKLCo
Posts: 2
Joined: Saturday 1st July 2023 7:11pm

Open file for input, VB6 to Gambas translation.

Post by FKLCo »

Hi
Please, if somebody can help me with translation of this part of program.
This program was write by me 20 years ago on windows (vb6). From 20 years I switch to linux I wont to translate this program to Gambas.


VB6 code:

Public Variante(1 To 500, 1 To 6) As Integer
Public Numar_extrageri As Integer

Public Sub Incarcare_Extrageri()
Open "C:\WINDOWS\Desktop\extrageri.loto" For Input As #1
Input #1, Numar_extrageri
frmMain.ProgressBar1.Visible = True
frmMain.sbStatusBar.SimpleText = "Incarcare Extrageri"
frmMain.ProgressBar1.Min = 0
frmMain.ProgressBar1.Max = Numar_extrageri
frmMain.Caption = "Incarcare Extrageri"
For x = 1 To Numar_extrageri
frmMain.ProgressBar1.Value = x
DoEvents
Input #1, Variante(x, 1), Variante(x, 2), Variante(x, 3), Variante(x, 4), Variante(x, 5), Variante(x, 6)
Next x
Close #1
frmMain.sbStatusBar.SimpleText = "Extrageri Incarcate"
frmMain.Caption = "Loto 5/40"
frmMain.ProgressBar1.Visible = False
End Sub

Gambas code:

Sub Incarcare_Extrageri()
Dim Fisier As File
Dim Numar_extrageri As Integer
Dim x As Integer
Dim Variante As New Integer[500, 6]
Fisier = Open "Extrageri.loto" For Input
Input Numar_extrageri
TextArea1.Text = Numar_extrageri
'frmMain.ProgressBar1.Visible = True
'frmMain.sbStatusBar.SimpleText = "Incarcare Extrageri"
'frmMain.ProgressBar1.Min = 0
'frmMain.ProgressBar1.Max = Numar_extrageri
'frmMain.Caption = "Incarcare Extrageri"
For x = 1 To Numar_extrageri
'frmMain.ProgressBar1.Value = x
'Wait
Label47.Text = x
Input #1, Variante[x, 1], Variante[x, 2], Variante[x, 3], Variante[x, 4], Variante[x, 5], Variante[x, 6]

Next
Close #1
' frmMain.sbStatusBar.SimpleText = "Extrageri Incarcate"
' frmMain.Caption = "Loto 5/40"
' frmMain.ProgressBar1.Visible = False

End

the file looks like this

455
5,13,25,26,37,38
5,11,20,21,32,38
10,11,27,29,32,38
3,10,31,36,38,40
.....
up to 455lines

All I want is to read a file like this ... read the fist line (455) and put it in variable "Numar_extrageri" after theat with for x=1 to Numar_extrageri to read all the numbers in Variante matrix.

Sorry for my English

Thanks
User avatar
BruceSteers
Posts: 1581
Joined: Thursday 23rd July 2020 5:20pm
Location: Isle of Wight
Contact:

Re: Open file for input, VB6 to Gambas translation.

Post by BruceSteers »

If at first you don't succeed , try doing something differently.
BruceS
User avatar
BruceSteers
Posts: 1581
Joined: Thursday 23rd July 2020 5:20pm
Location: Isle of Wight
Contact:

Re: Open file for input, VB6 to Gambas translation.

Post by BruceSteers »

Should be something like this...


Private Sub Incarcare_Extrageri()
Dim Fisier As File
Dim sText As String
Dim Numar_extrageri As Integer
Dim x As Integer

Fisier = Open "Extrageri.loto" For Input

 Line Input #Fisier, sText
 Numar_extrageri = Val(sText)

Dim Variante As New Integer[Numar_extrageri, 6]

TextArea1.Text = sText

For x = 0 To Numar_extrageri - 1
  frmMain.ProgressBar1.Value = x / Numar_extrageri
  Label47.Text = Str(x)
  Line Input #Fisier, sText
  Variante[x] = Split(sText, ",")
Next

Fisier.Close()

End
If at first you don't succeed , try doing something differently.
BruceS
FKLCo
Posts: 2
Joined: Saturday 1st July 2023 7:11pm

Re: Open file for input, VB6 to Gambas translation.

Post by FKLCo »

I translate to python, was piece of cake.

Code: Select all

import csv

# Deschide fișierul CSV în modul de citire
with open('/home/catalin/Documente/Programe Python/Loto 540/Extrageri.loto', 'r') as fisier_csv:
    # Creează un cititor CSV
    cititor = csv.reader(fisier_csv)

    # Citeste linia de antet
    antet = next(cititor)

    # Accesează doar primul element din antet și convertește-l într-un număr întreg
    primul_element = int(antet[0])

    # Afișează primul element din antet
    print(primul_element)

    # Inițializează matricea cu dimensiunile corespunzătoare
    numar_randuri = primul_element
    numar_coloane = 6
    matrice = [[None] * numar_coloane for _ in range(numar_randuri)]

    # Parcurge fiecare rând și coloană din fișierul CSV
    for i, rand in enumerate(cititor):
        for j, valoare in enumerate(rand):
            # Stochează valoarea în matrice
            matrice[i][j] = valoare

    # Accesează un element specific din matrice (de exemplu, elementul de la linia a și coloana b)
    a = 0
    b = 0
    valoare_ab = matrice[a][b]

    # Afișează valoarea elementului de la linia a și coloana b
    print(valoare_ab)

    # Iterează prin toate elementele matricei
    for x in range(numar_randuri):
        print('Extragerea nr.', x + 1, '=', end=" ")
        for y in range(numar_coloane):
            numar = matrice[x][y]
            print(numar, end=" ")
        print()
Thanks for answer, but I discover the python is mach human readable then ganbas. Take me a week to try to open a file in gambas without success, and in python 3 hours.
I love gambas for all the function but not for file read.
Post Reply