Volgens mij is het gewoon de bedoeling dat ze die data in een textfile of DB opslaan. Snap niet dat mensen hier rare oplossingen als communicerende applicaties gaan bedenken. In VB wat in een access DB frutten is triviaal.quote:Op maandag 3 januari 2011 21:28 schreef Core2 het volgende:
Het is dan ook niet zo moeilijk meer om van B naar A te gaan lijkt me. Je kunt dus communiceren via stdin/stdout. Je hebt nog wel wat andere mogelijkheden (named pipes, memory mapped files, tcp/ip, etc) waar je denk ik nog wat te weinig ervaring voor hebt (met alle respect).
Je kunt die opdracht op meerdere manieren interpreteren, ik heb geen idee wat de context is. Er wordt gesproken over het Process object, een orderlijst en twee applicaties die iets met die orderlijst moeten doen. Niet zo gek dat je dan bij communicerende processen uitkomt, maar zou me niks verbazen als ze inderdaad een database oplossing bedoelen.quote:Op dinsdag 4 januari 2011 14:39 schreef Catbert het volgende:
[..]
Volgens mij is het gewoon de bedoeling dat ze die data in een textfile of DB opslaan. Snap niet dat mensen hier rare oplossingen als communicerende applicaties gaan bedenken. In VB wat in een access DB frutten is triviaal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Dim File_Name As String = "D:\vb08sbs\voorbeelden\899J6\Inzending\899Q6\orders.txt" If System.IO.File.Exists(File_Name) = True Then Dim SplitLineArr() As String, NewTextLine As String Dim objReader As New System.IO.StreamReader(File_Name) Do While objReader.Peek() <> -1 NewTextLine = objReader.ReadLine() SplitLineArr = Split(objReader.ReadLine(), ";") Label5.Text = NewTextLine Label6.Text = SplitLineArr(0) ' Dim index As Integer = OrderListBox.FindString(SplitLineArr(0)) ' If index <> -1 Then ' OrderListBox.Items(index) = NewTextLine ' ArticlePrice = Convert.ToDecimal(Trim(SplitLineArr(2)), New System.Globalization.CultureInfo("en-US")) ' TotalPrice = TotalPrice + (Trim(SplitLineArr(3)) * ArticlePrice) ' End If Loop End If |
Je leest nu door deze code steeds twee regels uit het bestand.quote:Op maandag 1 augustus 2011 21:26 schreef Modus het volgende:
Thanks, had je reply nog niet gezien. Ik heb dat stukje inmiddels ook werkend kunnen krijgen. Ben inmiddels weer iets verder gevorderd.
Nu wat anders, een wat specifieker probleem, dus ms makkelijker om uit te zoeken.
Na het sluiten van App2 laat ik het txt-bestand opnieuw openen, dat moet regel voor regel uitgelezen worden, elke regel moet opgesplitst naar een array en het eerste item van deze array moet als zoekterm gebruikt worden om in de Listbox van App1 het bijbehorende item terug te vinden.
Leek allemaal goed te gaan maar het juiste Listbox.Item wordt niet goed bijgewerkt. Nader onderzoek leert dat die array vullen niet goed gaat, maar ik zie niet wat ik daar fout aan doe. Heb ongeveerd e volgende code:
[ code verwijderd ]
1 2 | NewTextLine = objReader.ReadLine() SplitLineArr = Split(objReader.ReadLine(), ";") |
1 | SplitLineArr = Split(NewTextLine , ";") |
Het enige wat deze Do zegt is dat er code moet worden uitgevoerd zolang er nog tekst te vinden is in het bestand. Met .Peek() kijk je namelijk naar de volgende regel, hij wordt dan nog niet gelezen, dat gebeurd pas met .ReadLine() die je twee keer aanroeptquote:Op maandag 1 augustus 2011 22:46 schreef Modus het volgende:
Is dat zo? Alles wat binnen de Do While-Loop code valt gaat toch over dezelfde regel?
Ah, maar dan gebeurd er dus wel wat anders dan net!quote:Heb de code aangepast zoals je aangeeft en dan gebeurt er nog steeds niks, label5 en 6 blijven leeg.
1 2 3 4 5 6 7 8 9 10 11 12 13 | Do While not objReader.EndOfStream NewTextLine = objReader.ReadLine() SplitLineArr = Split(NewTextLine, ";") Label5.Text = NewTextLine Label6.Text = SplitLineArr(0) ' Dim index As Integer = OrderListBox.FindString(SplitLineArr(0)) ' If index <> -1 Then ' OrderListBox.Items(index) = NewTextLine ' ArticlePrice = Convert.ToDecimal(Trim(SplitLineArr(2)), New System.Globalization.CultureInfo("en-US")) ' TotalPrice = TotalPrice + (Trim(SplitLineArr(3)) * ArticlePrice) ' End If Loop |
Dan is het logisch dat jouw labels leegblijvenquote:Op maandag 1 augustus 2011 23:10 schreef Modus het volgende:
Bij het creëren en vullen van dat tekstbestand wordt idd elke keer een enter aan het einde van een weggeschreven regel toegevoegd, heb het idee dat het daar iets mee te maken heeft ja. Als ik het open en naar het einde van het bestand ga, kom ik uit onder de tekstregels, aan het begin van een nieuwe regel.
Tijdens het wegschrijven (ik neem aan dat dat met een DO of FOR-loop gaat) zou je kunnen kijken of je met de laatste regel bezig bent en als dat het geval is, voeg je geen witregel toe.quote:Is er een manier om dat tijdens het wegschrijven al te voorkomen, of moet je iets doen waardoor je na de laatste regel de nieuwe lege regel weer delete o.i.d.? Die enter moet natuurlijk wel gebruikt worden om telkens regels onder elkaar in het textbestand te kunnen krijgen...?
Dat zal denk ik de makkelijkste optie zijn, zal vanavond eens kijken thuis. Thanks.quote:Op dinsdag 2 augustus 2011 09:54 schreef TallMan het volgende:
Of bij het uitlezen van het bestand kijken of je een lege regel hebt uitgelezen en die niet processen
|
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |