abonnement Unibet Coolblue Bitvavo
pi_107481680
Ik wil een programma schrijven die iets doet met een ingescande afbeelding. (Ik werk op Ubuntu.) Scanimage is een command die het scannen doet. Hoe laat ik mijn programma goed werken met andere applicaties? Popen is een optie en volgens mij moet dat wel kunnen werken, maar zijn er ook alternatieven? Libraries includen oid? Ik heb hier geen ervaring mee, advies/tips/zoekwoorden zijn welkom!
pi_107527729
quote:
Popen is een optie en volgens mij moet dat wel kunnen werken, maar zijn er ook alternatieven?
Je bent te onduidelijk in wat je wilt. Als je gerichter advies wilt, dan zul je beter moeten omschrijven wat je wilt bereiken.

Als de broncode van scanimage openbaar is, kan je daarvan gebruik maken. Dit is echter meestal erg complex om aan de praat te krijgen bij programma's van meer dan minimale grootte.

Wat betreft popen: pipes zijn een laatste redmiddel dat je alleen wilt gebruiken als je geen andere mogelijkheden hebt. In veel gevallen kan je beter een extern programma uitvoeren voordat je jouw programma start of met een system-call waarin je de uitvoer naar een bestand laat schrijven.

Alleen als je interactief met een extern programma wilt werken, moet je pipes overwegen. In alle andere gevallen verwacht ik dat er betere oplossingen zijn.

[ Bericht 0% gewijzigd door GS42 op 02-02-2012 20:00:31 ]
"Slechts diegene mag slopen die iets beters kan bouwen."
pi_107563827
quote:
0s.gif Op donderdag 2 februari 2012 19:36 schreef GS42 het volgende:

[..]

Je bent te onduidelijk in wat je wilt. Als je gerichter advies wilt, dan zul je beter moeten omschrijven wat je wilt bereiken.

Als de broncode van scanimage openbaar is, kan je daarvan gebruik maken. Dit is echter meestal erg complex om aan de praat te krijgen bij programma's van meer dan minimale grootte.

Wat betreft popen: pipes zijn een laatste redmiddel dat je alleen wilt gebruiken als je geen andere mogelijkheden hebt. In veel gevallen kan je beter een extern programma uitvoeren voordat je jouw programma start of met een system-call waarin je de uitvoer naar een bestand laat schrijven.

Alleen als je interactief met een extern programma wilt werken, moet je pipes overwegen. In alle andere gevallen verwacht ik dat er betere oplossingen zijn.
Ik wil in een programma gebruik maken van scanimage, zodat de gebruiker het niet hoeft te doen. In principe kan de gebruiker dat handmatig doen in command line. Het is enkel instructie opgeven en resultaat afvangen, meer interactie is niet nodig. Ik heb geen idee hoe ik specifieker kan zijn. Een system-call lijkt mij niet handig, want ik wil juist automatiseren. Broncode downloaden en verwerken in mijn programma is wel een nette oplossing, maar misschien te veel moeite voor mijn relatief klein project. Bedankt iig voor je reactie.
pi_107564305
quote:
0s.gif Op vrijdag 3 februari 2012 17:42 schreef FastFox91 het volgende:

[..]

Ik wil in een programma gebruik maken van scanimage, zodat de gebruiker het niet hoeft te doen. In principe kan de gebruiker dat handmatig doen in command line. Het is enkel instructie opgeven en resultaat afvangen, meer interactie is niet nodig. Ik heb geen idee hoe ik specifieker kan zijn. Een system-call lijkt mij niet handig, want ik wil juist automatiseren. Broncode downloaden en verwerken in mijn programma is wel een nette oplossing, maar misschien te veel moeite voor mijn relatief klein project. Bedankt iig voor je reactie.
Ik zou geen C++ gebruiken voor zulke simpele handelingen.
pi_107564371
quote:
0s.gif Op vrijdag 3 februari 2012 18:00 schreef thabit het volgende:

[..]

Ik zou geen C++ gebruiken voor zulke simpele handelingen.
De handelingen die ik met het resultaat wil doen zijn minder simpel.
pi_107565795
quote:
Het is enkel instructie opgeven en resultaat afvangen, meer interactie is niet nodig. Ik heb geen idee hoe ik specifieker kan zijn. Een system-call lijkt mij niet handig, want ik wil juist automatiseren
Specifieker hoeft niet, denk ik. ;) Een system call lijkt me in dit geval juist ideaal. Kijk eens naar de system() functie, waarmee je de shell aan kunt roepen vanuit je programma. Zo kun je jouw externe programma automatisch aan laten roepen. Als je de uitvoer van het programma nodig hebt, kan je die doorsturen een een bestandje en deze later uitlezen (denk aan "ls > .temp.txt" ofzo). Als de uitvoer een nieuwe bestand is (zoals ik verwacht van scanimages) hoef je die moeite niet eens te doen.

Denk je dat je dit kunt gebruiken of zie ik iets over het hoofd?
"Slechts diegene mag slopen die iets beters kan bouwen."
pi_107588473
quote:
0s.gif Op vrijdag 3 februari 2012 18:55 schreef GS42 het volgende:

[..]

Specifieker hoeft niet, denk ik. ;) Een system call lijkt me in dit geval juist ideaal. Kijk eens naar de system() functie, waarmee je de shell aan kunt roepen vanuit je programma. Zo kun je jouw externe programma automatisch aan laten roepen. Als je de uitvoer van het programma nodig hebt, kan je die doorsturen een een bestandje en deze later uitlezen (denk aan "ls > .temp.txt" ofzo). Als de uitvoer een nieuwe bestand is (zoals ik verwacht van scanimages) hoef je die moeite niet eens te doen.

Denk je dat je dit kunt gebruiken of zie ik iets over het hoofd?
Voor de werking lijkt het erg op pipes (in deze simpele vorm). Bedankt voor het advies, ik ga ermee aan de slag. :)
pi_107746650
We zijn net begonnen met java en daarom een hele domme vraag, maar waarom krijg ik een foutmelding dat Student a leeg is ?

Tabel klas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;

public class Klas
{
private ArrayList<Student> klas;
public Klas()
{
ArrayList klas = new ArrayList<Student>();
}
public void printoverzicht()
{
for(Student a : klas)
{
System.out.println(a.getNaam());
}
}

}

tabel Student
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Student
{
    public String naam;
    public String woonplaats;
    public Student(String n, String w)
    {
        naam=n;
        woonplaats=w;
    }
    public String getNaam()
    {
        return naam;
    }
    
}
trouwens, krijg het niet voor elkaar om de code in een code tag te zetten ? Ook kan ik mijn post niet previewen.

Bedankt alvast !
pi_107748051
quote:
0s.gif Op woensdag 8 februari 2012 12:36 schreef obsama het volgende:
We zijn net begonnen met java en daarom een hele domme vraag, maar waarom krijg ik een foutmelding dat Student a leeg is ?

Tabel klas
[ code verwijderd ]

tabel Student
[ code verwijderd ]

trouwens, krijg het niet voor elkaar om de code in een code tag te zetten ? Ook kan ik mijn post niet previewen.

Bedankt alvast !
Twee opmerkingen over de manier waarop je de code presenteert:

(1) Inspringen, dat bovenste blok is zo niet leesbaar.
(2) Geef een zo kort mogelijk doch volledig programma (dus inclusief main) dat runt en de foutmelding geeft.

Verder is Java natuurlijk geen C++. Het lijkt van de buitenkant erg op elkaar, maar onder de motorkap zijn er nog wel behoorlijke verschillen.
  woensdag 8 februari 2012 @ 19:53:38 #235
189216 netolk
maar dan andersom
pi_107762916
quote:
0s.gif Op woensdag 8 februari 2012 13:23 schreef thabit het volgende:

[..]

Twee opmerkingen over de manier waarop je de code presenteert:

(1) Inspringen, dat bovenste blok is zo niet leesbaar.
(2) Geef een zo kort mogelijk doch volledig programma (dus inclusief main) dat runt en de foutmelding geeft.

Verder is Java natuurlijk geen C++. Het lijkt van de buitenkant erg op elkaar, maar onder de motorkap zijn er nog wel behoorlijke verschillen.
Dit dus, maar aangezien er geen java voor dummy's topic lijkt te bestaan vergeef ik het je ;)

Maar volgens mij komt het gewoon omdat je een lege arraylist copieërt naar de (als het goed is ook lege) arraylist.
1ArrayList klas = new ArrayList<Student>();
Bij mijn weten is dit ook een niet nuttige en dus overbodige actie
Beware of the Raping Zebra's
pi_107860085
Net begonnen met een cursusje cpp. Ik strand al bij simpele input dingetjes... ik wil graag weten waarom

#include <iostream>
using namespace std;
int main()
{
char line[100];
cout << "Voer een lijn in" << endl;
cin.getline( line, 100);
cout << line;

system ("PAUSE");
return 0;
}
Oké deze werkt. Maar in de aanwijzing bij de opgave staat dat ik moet inlezen met cin.getline(const char* stg, Int len).

Dat lukt me dus niet. Ik snap wel dat je in deze versie netjes met een pointer werkt. Maar m'n compiler geeft foutmeldingen.
pi_107861479
"cin.getline(const char* stg, Int len)", betekent niet dat je het letterlijk daarmee moet inlezen. Het geeft aan wat voort datetypen meegegeven moet worden. line is dus een const char* en 100 is een int.
pi_107861617
Akkoord maar hoe introduceer ik 'm dan? Als const char line[100];
werkt het niet...
pi_107861836
In het werkende deel gebruik je "char line[100]" (regel 5) en dat werkt. Als je const char line[100] doet, krijg je een array van chars die constant zijn. Dat wil je niet, aangezien je nieuwe chars wil inlezen (en opslaan). De pointer naar de array moet wel constant zijn.

(Ik weet overigs niet of ik het helemaal goed heb, ben relatief gezien ook nog een beginner.)
pi_107861968
Bedankt voor je uitleg.
Maar je leest de string in op regel 7, via een pointer dus? Hoe mag die wel constanten zijn?
Behh ik snap het niet.

#include <iostream>
using namespace std;
int main()
{
char line[100];
cout << "Voer een lijn in" << endl;
cin.getline(const char *line, 100);
cout << line <<endl;

system ("PAUSE");
return 0;
}
zegt:
expected primary-expression before "const"
pi_107862259
Waarom pas je een werkend stukje code aan eigenlijk, waardoor die niet meer werkt? Dit werkt toch gewoon?
1
2
3
4
char line[100]; // Hiermee reserveer je 100 karakters
cout << "Voer een lijn in" << endl; // Vraag wat invoer aan de gebruiker
cin.getline(line, 100); // Lees 100 karakters en schrijf deze weg naar line.
cout << line <<endl; // Output line
pi_107862324
Omdat mijn docent blijkbaar wil dat ik pointers en constanten gebruik? Lijkt me dat er een fundamenteel verschil in zit, en ons daarom er op wijst?
pi_107862446
Misschien een lesje pointers gebruiken. Het is niet zo als je nu getline( line vervangt door getline( const char* line, dat je dan ineens met pointers werken oid.
pi_107862590
Bedankt in ieder geval voor je feedback. Ik snap pointers wel aardig dacht ik. Snap alleen niet waarom die op de input line een const char pointer wilt nemen. Ik lees m nu gewoon in en ga met een pointer er doorheen om van elk karakter te kijken of het een kleine letter, hoofdlette, getal of iets anders is. Draait goed. Snapte alleen die restrictie uit mijn eerste post niet.
pi_107862687
Graag gedaan. Het stukje geheugen waar de chars in staan blijft hetzelfde. Line is een pointer naar dat stukje geheugen en je wil afdwingen dat die pointer niet naar iets anders kan gaan wijzen.
pi_107869094
quote:
0s.gif Op zaterdag 11 februari 2012 14:38 schreef Oneironaut het volgende:
Maar in de aanwijzing bij de opgave staat dat ik moet inlezen met cin.getline(const char* stg, Int len).
Ik zou een ander boek pakken. :P. Een const char* is een pointer naar een const char. Dit zou suggereren dat de functie de chars in stg niet verandert, wat-ie natuurlijk wel doet. Die functie heeft dus een gewone char* als input, niet een const char*.
pi_107884295
quote:
4s.gif Op zaterdag 11 februari 2012 19:39 schreef thabit het volgende:

[..]

Een const char* is een pointer naar een const char.
Heb ik ook weer wat geleerd. Ik dacht dat een const char* een const pointer was naar een char.
pi_107885963
quote:
0s.gif Op zondag 12 februari 2012 09:54 schreef FastFox91 het volgende:

[..]

Heb ik ook weer wat geleerd. Ik dacht dat een const char* een const pointer was naar een char.
Een const pointer naar een char is char* const.

En dan nu de ultieme test: wat is een char const* ?
pi_107886576
quote:
12s.gif Op zondag 12 februari 2012 11:49 schreef thabit het volgende:

[..]

Een const pointer naar een char is char* const.

En dan nu de ultieme test: wat is een char const* ?
In totaal heb je 4 mogelijkheden:
• pointer naar char (char*)
• const pointer naar char (char* const)
• pointer naar const char (const char*)
• const pointer naar const char (char const * const)
Ik denk dat er meerdere schrijfnotaties zijn en dat char const* hetzelfde is als const char* (pointer naar een const char)
pi_107892158
quote:
0s.gif Op zondag 12 februari 2012 12:12 schreef FastFox91 het volgende:

[..]

In totaal heb je 4 mogelijkheden:
• pointer naar char (char*)
• const pointer naar char (char* const)
• pointer naar const char (const char*)
• const pointer naar const char (char const * const)
Ik denk dat er meerdere schrijfnotaties zijn en dat char const* hetzelfde is als const char* (pointer naar een const char)
Juist.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')