Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

deel van een string weergeven in Liberty BASIC

abcott
10 antwoorden
  • Hey,

    Ik heb een dialoogvenster waarmee men een bestand op de computer kan selecteren. Daarna komt er in een textbox het adres van het geselecteerde bestand te staan. Nu wil ik het laatste deel van het adres (de bestandsnaam) in een aparte string zetten. Hoe doe ik dat. Ik wil dus het adres van de bestandsnaam splitsen zodat ik de naam van het bestand krijg.

    Bijvoortbaat dank.

    Zonder een WINDOWS functie (DLL o.i.d.)

    Abcott.
  • Voor de novieten:

    Ik heb dus een FILEDIALOG
    [code:1:ea8d7aba54]
    filedialog "Kies hier een bestand",c:\*.*", fileName$
    if fileName$ ="" then print "kies opnieuw" :wait
    print fileName$
    [/code:1:ea8d7aba54]
    Ik run mijn programma en nu lees ik:
    C:\Program Files\Liberty BASIC v4.03\cardgames\cards2.bas

    Hoe kom ik aan het deel cards2.bas om dat in een ander venster te plaatsen?
  • Hallo Abcott,

    Er is een Nederlands forum van en voor Liberty BASIC gebruikers.
    [code:1:38ee432410] For a = Len(fileName$) to 1 step -1
    test$ = Mid$(fileName$,a,1)
    If test$ = "\" Then
    Path$ = Left$(fileName$,a)
    shortFile$ = right$(fileName$,len(fileName$)-a)
    a = 0
    end if
    Next a

    print Path$
    print shortFile$
    [/code:1:38ee432410]

    Gordon.
    P.s. Tot ziens op Libertybasic.nl
  • Je kunt de string van achteren naar voren scannen op het "" teken, maar er zijn vast ook wel functies te vinden die hetzelfde doen. In Visual Basic is daar de functie Split[/color:76fc41076c] maar de functie InStrRev[/color:76fc41076c] is daar zelfs nog beter voor geschikt. Heeft Liberty Basic niet dezelfde soort functies?


    [b:76fc41076c]*[/color:76fc41076c][/b:76fc41076c] [size=9:76fc41076c]edit[/size:76fc41076c] : Ik heb de helpbestanden van liberty basic er eens op nagekeken maar het lijkt er op dat alleen InStr[/color:76fc41076c] een bestaan heeft in Liberty Basic en die functie is niet de meest bruikbare in dit geval. Beetje jammer. :-?
  • Zelf zou ik gewoon een functie maken die vanaf het eind gaat terug zoeken naar het ''-teken. Gewoon simpel. Zo'n functie kan beslist vaker gebruikt worden. Lijkt misschien niet efficient, maar een string is eindig dus om de CPU tijd hoef je je niet druk te maken. En andere programmeertalen zullen dat ook niet efficienter doen. Misschien een tikkie makkelijker en met een standaard functie (die dit toch ook maar weer moet doen). Vroeger heb ik heel veel van dat soort functies geschreven :cry:. Ook bv voor het hernoemen van een bestand naar .BAK en deleten van de oude .BAK en dan kan ik een nieuw bestand creëren. Ook een echte kludge of wil ik gewoon weer wat te veel tegelijk.
  • Ik zag wat koeterwaals in de aangrenzende onderwerpen.
    Sommige voorbeelden doen het niet zonder meer.

    Iedereen kan wel gewoon zeggen dat een functie aangeroepen moet worden, maar het was juist de bedoeling om deze functie te schrijven en niet ervan uit te gaan dat die wel ergens gevonden kan worden en ingeladen kan worden.

    Bij Java is het teken voor het begin van een functie een {
    Bij C# volgens sommigen een <
    Bij VB.NET staat een omschrijving
    Bij LB is het gewoon FUNCTION en dat is duidelijk.

    Dus maak een functie
    [code:1:52f4f7afa7]
    FUNCTION getPathNaam$(f$)
    slash = len(f$)
    while instr(f$, "\", slash)=0
    slash=slash-1
    wend
    getPathNaam$=left$(f$,slash)
    END FUNCTION
    [/code:1:52f4f7afa7]

    Nu kun je overal in de programma schrijven
    padnaam$ = getPathNaam$(fileName$)

    Abcott
  • [quote:87e607ee32="abcott"]Bij Java is het teken voor het begin van een functie een {
    Bij C# volgens sommigen een <[/quote:87e607ee32]In Java én C# werkt het percies hetzelfde:[code:1:87e607ee32]private string TestFunctie(string parameter)
    {
    //Hier gebeurd iets enorm nuttigs
    return parameter;
    }[/code:1:87e607ee32]
    Je geeft dus eerst de visability aan (of een functie van buiten de klasse gezien mag worden), dan de returntype, vervolgens de naam en dan de paramater(s) van de functie. Een functie begint dus niet met een { of < of wat dan ook…

    Nu vraag ik me dus even af hoe dat in LB gaat: waar staat in bovenstaande functie wat de functie teruggeeft?

    Sowieso zijn niet-typesafe talen bagger ;)
  • [quote:184458b129="abcott"]Bij Java is het teken voor het begin van een functie een {
    Bij C# volgens sommigen een <
    Bij VB.NET staat een omschrijving
    Bij LB is het gewoon FUNCTION en dat is duidelijk.
    [/quote:184458b129]C# gebruikt in principe C syntax, dat is dus gewoon iets van type naam en haakjes. C# is wat specifieker, maar in essentie hetzelfde.
    Bijvoorbeeld:
    [code:1:184458b129]
    int Voorbeeld(int test)
    {
    /* Voorbeeld tekst */
    return 0;
    }
    [/code:1:184458b129]
    In Pascal de Delphi krijg je meer de duidelijk LB sysntax terug:
    [code:1:184458b129]
    function Voorbeeld(test: integer): integer;
    begin
    { Voorbeeld tekst }
    Voorbeeld := 0;
    end;
    [/code:1:184458b129]Voor mij zijn dit dus echt niet de verschillen om talen te kiezen. Die zitten meer in de wijze van programmeren. Kan ik makkelijk een letterteken uit een string oid halen? Kan ik makkelijk een letter of woord vergelijking maken? Hoe zit het met hoofd/kleine letter? Kan ik overzichtelijk coderen? In .Net liep ik nogal eens tegen conversie probleempjes aan vanwege Ansi string, oftewel een letterteken is niet altijd 1 byte oid meer.
    En met name bij .Net, maar ook in andere programmeertalen, wordt niet echt reclame gemaakt voor makkelijk bruikbare string bewerkings functies. Mijn indruk is dat C talen hierin het slechtste scoren. De nieuwere Basic (de oude dateert voor mij van voor 1995) vind ik op dat punt wel overzichtelijke alleen biedt meestal te veel vrijheid.
  • Hallo Bill Gates,

    Het type staat in het $ teken. Een string.

    De functie retourneert de bewerking met de ingegeven parameter(s) {getPathNaam$=left$(f$,slash)}

    Dat is in alle talen gelijk. Alleen hoef je in Liberty BASIC niet apart op te geven dat de functie een string moet retourneren. Dat is duidelijk door het teken $. En het woordje FUNCTION laat aan duidelijkheid niets te wensen over.

    Of bedoel je met je opmerking: de discussie over record typen ten opzichte van struct in LB? Daar wil ik wel over praten, maar dat is een ander onderwerp.

    Abcott.
  • [quote:ba541e108f="abcott"]Hallo Bill Gates,

    Het type staat in het $ teken. Een string.

    De functie retourneert de bewerking met de ingegeven parameter(s) {getPathNaam$=left$(f$,slash)}

    Dat is in alle talen gelijk. Alleen hoef je in Liberty BASIC niet apart op te geven dat de functie een string moet retourneren. Dat is duidelijk door het teken $.[/quote:ba541e108f]Snel de functie aanpassen heh? ;)

    Maar heb je dan voor ieder type een apart teken of zo?

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.