Hallo

Welkom, Gast. Alsjeblieft inloggen of registreren.

Recent

497 gasten, 0 leden

Welkom, Gast. Alsjeblieft inloggen of registreren.

27 april 2024, 09:30:38

Login met gebruikersnaam, wachtwoord en sessielengte

Nieuws

Welkom op het vernieuwde NL Computer Forum!

Auteur Topic: Where i've been wrong?  (gelezen 7613 keer)

0 leden en 1 gast bekijken dit topic.

Offline Michel Uphoff

  • Wizop
  • *****
  • Berichten: 1.816
  • Geslacht: Man
    • Tentoonstelling
Where i've been wrong?
« Gepost op: 5 september 2011, 15:10:55 »
Hoi,
 
Ik heb kennelijk last van een blackout, want het volgende wel erg basale stukje VB code werkt niet:
 
 
Dim result as string
 
Open "test.dat" For Binary As #1
Put #1, 1, "De data die wel geschreven, maar niet gelezen wordt"
Close #1

 
Open "test.dat" For Binary As #1
Get #1, 1, result
Close #1

 
Test.dat bevat na de eerste 'Open' actie  inderdaad de opgegeven tekenreeks, maar het Get statement levert een lege 'result' string op.
Wie maakt mij wakker?
Michel Uphoff
Homepage

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: Where i've been wrong?
« Reactie #1 Gepost op: 5 september 2011, 16:09:44 »
Hoi Michel,

Citaat
Ik heb kennelijk last van een blackout, want het volgende wel erg basale stukje VB code werkt niet:
Die code werkt wel, die geeft netjes een lege string terug.
Dat komt omdat de string RESULT leeg is en GET ... kan er dan niets inplakken.
Optie 1:
Vervang de regel GET ... door Line Input #1, Result
Optie 2:
Vervang de regel GET ... door
Dim p As Integer
result = String(255, 0)    'reserveer ruimte in string
Get #1, 1, result
p = InStr(result, Chr(0))  'zoek startpunt ballast
If p > 0 Then
   result = Left(result, p - 1)     'strip ballast
Else
   result = "Error: de tekst kan onvolledig zijn!"
End If

Optie 3:
Hetzelfde als Optie 2 maar doe Dim Result As String * 255.
Result = String(255,0) kan dan vervallen.


Peter

Offline Michel Uphoff

  • Wizop
  • *****
  • Berichten: 1.816
  • Geslacht: Man
    • Tentoonstelling
Re: Where i've been wrong?
« Reactie #2 Gepost op: 5 september 2011, 16:31:09 »
Hoi Peter,
 
Ach ja, da's waar ook. Dat stomme VB6 moet hiervoor stringruimte reserveren.
Blijft zo onlogisch dat ik het vergeten was.
Opgelost.
Michel Uphoff
Homepage

Offline TdJ

  • Sysop
  • *****
  • Berichten: 218
  • Geslacht: Man
    • Mijn bedrijf
Re: Where i've been wrong?
« Reactie #3 Gepost op: 8 september 2011, 15:31:28 »
En als je niet weet hoeveel data er gaat komen zou je bijvoorbeeld kunnen kiezen voor:
 
result = space(lof(#1)) ipv result = space(255)

TdJ